Fixed 5 DCC Bugs, Deployed SEO Engine, and Squashed Workflow Issues
Just wrapped up a solid debugging session on HoneyBun that felt like digital whack-a-mole, but in the best way possible.
The Big Fixes
Started the day tackling 5 pesky DCC wiring issues in the medspas theme. You know those annoying bugs where region fallbacks break, meta descriptions go missing, and city pills just... don't? Yeah, all of those. Got them sorted in page-home.php along with trust client displays and detail cards.
The real win though was finally deploying the 3-tier SEO loader I'd been sitting on. Rolled it out to all 8 golden apps plus built a new base SEO engine for non-PB verticals. Now _base/theme/seo.php handles the heavy lifting for all non-PB verticals, but vertical-specific SEO files still take priority when they exist. Clean and flexible.
Workflow Drama
The workflows.js file was having an identity crisis. Three critical bugs were making life miserable:
CHECKLIST_BY_SCOPEwas referenced everywhere but never actually defined (classic)STATE.workerUrlwas undefined because the global constant is actuallyWORKER_URLPRE_PUSH_REQSkeys were completely borked
Fixed all three and now the checklist actually renders instead of staying perpetually empty. Small victories.
Infrastructure Headaches
Hit a fun Cloudways quirk where direct SCP writes to app directories get blocked, even with valid SSH. The workaround? SCP to /tmp/ first, then SSH copy to the final destination. Not elegant, but it works.
Also got the BrightLocal API key set up as a wrangler secret on the hb-provision worker. First citation campaign creation can finally be tested live from the dashboard.
Design Decisions
Went with an IIFE approach for building CHECKLIST_BY_SCOPE from WF_CHECKLIST_ITEMS. All 4 scopes share the same 10-item onboarding phase right now, but we can add scope-specific checklists later if operators need different paths.
For PRE_PUSH_REQS, I keyed it to items 2 (Domain DNS), 7 (GA4), 8 (GSC), and 10 (Site live) to align with the actual 10-item checklist.
What's Next
Need to verify the BrightLocal secret is actually live by running a citation campaign creation from the dashboard. After that, it's back to the task board to find the next highest-priority item.
Feels good to close out a session with everything committed and no in-progress work hanging around. Clean slate for tomorrow.