[object Object]

← back to Marketing Command Center

simplify MCC navigation and expand quick post assets

8cbe82e1a225e46ecc697d4567c7cb91414a432b · 2026-08-28 09:11:32 -0700 · Steve Abrams

Files touched

Diff

commit 8cbe82e1a225e46ecc697d4567c7cb91414a432b
Author: Steve Abrams <steve@designerwallcoverings.com>
Date:   Fri Aug 28 09:11:32 2026 -0700

    simplify MCC navigation and expand quick post assets
---
 public/app.js              | 28 ++++++++++++++++------------
 public/panels/quickpost.js | 13 +++++++++++--
 2 files changed, 27 insertions(+), 14 deletions(-)

diff --git a/public/app.js b/public/app.js
index c26d334..e700141 100644
--- a/public/app.js
+++ b/public/app.js
@@ -7,24 +7,28 @@ const $ = s => document.querySelector(s);
 window.MCC_PANELS = window.MCC_PANELS || {};
 let PANELS = [];
 
-// Curated nav groups — streamlined to 6, led by the Calendar (the daily driver).
-// Any panel not listed falls into "More" (should be empty). Some ids are merged
-// hosts: `calendarhub` = Calendar (Timeline+Plan), `compose` = Compose
-// (Suggested+Manual). Their underlying panels are hidden via HIDDEN below.
+// Curated nav groups — four plain-language actions for first-time users.
+// Power tools not listed here fall into "More" and remain available via search.
 const GROUPS = [
-  { name: 'Calendar', ids: ['calendarhub'] },
-  { name: 'Compose', ids: ['compose', 'quickpost', 'linkedin', 'social'] },
-  { name: 'Plan', ids: ['playbook', 'board'] },
-  { name: 'Library', ids: ['assets', 'sounds', 'reels', 'layouts', 'copy', 'templates'] },
-  { name: 'Insights', ids: ['insights', 'ig-activity', 'vendors'] },   // ig-activity un-stranded from "More"
-  { name: 'Accounts & Email', ids: ['accounts', 'channels', 'clients', 'constant-contact', 'browse-abandon'] },
+  { name: 'Make a post', ids: ['quickpost', 'compose'] },
+  { name: 'Plan', ids: ['calendarhub', 'playbook', 'board'] },
+  { name: 'See results', ids: ['insights', 'social', 'reels'] },
+  { name: 'Accounts', ids: ['accounts', 'channels'] },
 ];
 
 // Relabel a panel in the SIDEBAR only, WITHOUT editing its module (a module may be
 // owned by another session — e.g. modules/vendors/index.js). Keyed by panel id.
 const TITLE_OVERRIDES = {
-  vendors: 'IG Account Health',   // now also holds the Owned·DW Fleet health view, not just vendors
-  board: 'Streams Pipeline',      // "Board" was vague — it's the cross-channel queue
+  quickpost: 'Make a post',
+  compose: 'Post ideas',
+  social: 'Post history',
+  reels: 'Videos',
+  vendors: 'Account check',
+  board: 'What’s happening',
+  calendarhub: 'What’s planned',
+  playbook: 'Post plan',
+  insights: 'Results',
+  channels: 'Social accounts',
   layouts: 'Layouts',             // trim "On-Demand Layouts" for the rail
 };
 // Hidden/merged panels → their host, so the command palette can show a "· via Host"
diff --git a/public/panels/quickpost.js b/public/panels/quickpost.js
index 8c4418a..e9c43c7 100644
--- a/public/panels/quickpost.js
+++ b/public/panels/quickpost.js
@@ -40,8 +40,17 @@ window.MCC_PANELS.quickpost = {
 
     async function loadAssets() {
       try {
-        const d = await fetch(O + '/api/assets/list', {credentials:'same-origin'}).then(r => r.json());
-        allAssets = (d.assets || []).filter(a => a.src);
+        const [saved, catalog] = await Promise.all([
+          fetch(O + '/api/assets/list', {credentials:'same-origin'}).then(r => r.json()),
+          fetch(O + '/api/assets/catalog?limit=200', {credentials:'same-origin'}).then(r => r.ok ? r.json() : {products:[]}).catch(() => ({products:[]}))
+        ]);
+        const savedAssets = (saved.assets || []).filter(a => a.src);
+        const catalogAssets = (catalog.products || []).filter(p => p.url).map(p => ({
+          id: `catalog-${p.handle || p.url}`, name: p.title || 'DW catalog image', kind: 'catalog', src: p.url,
+          tags: ['dw-catalog', p.type || 'wallcovering'], aiTags: {}
+        }));
+        const seen = new Set();
+        allAssets = [...savedAssets, ...catalogAssets].filter(a => { const key = a.src; if (seen.has(key)) return false; seen.add(key); return true; });
         renderAssets();
       } catch (_) { $('#kp-assets').innerHTML = '<div class="kp-error">Pictures could not load. Paste a picture link below.</div>'; }
     }

← 3a9133d make quick post asset picking simpler  ·  back to Marketing Command Center  ·  record MCC UX verification evidence ef2303b →