When a site was created by typing just a name (e.g. "Arnav Sharma"), starting a voice session was immediately showing the full intake form — before the AI had a chance to ask what the business does. A name alone is not enough context to trigger the form; the AI now asks conversationally first and shows the form only after learning more about the business. **Where:** Admin AI Playground (Blueprint Wizard) → Voice button, on a newly created site with only a business name **How to test:** - Create a new site by entering only a name (no industry or description) - Start a voice session - Confirm the AI greets you and asks about your business rather than showing the intake form immediately **Watch for:** Intake form appearing immediately after voice connects on name-only sites.
When a new site is generated, our AI now suggests ready-to-use copy for exit-intent and newsletter popups tailored to the site's industry and offer — so clicking "Add → Exit popup" opens a pre-filled form instead of a blank one. **Where:** Site editor → hover any section → Add → Exit popup or Newsletter popup **How to test:** - Generate a new site for a commerce-style business (e.g. a retail or service business with an offer) - Open the site editor and click to add an Exit popup or Newsletter popup - Verify the form opens pre-filled with relevant headline, subtext, and CTA copy matching the business **Watch for:** Pre-fills appearing on luxury or professional-services sites (they are intentionally excluded), or the popup form opening blank when suggestions should be available.
Contacts who previously completed a journey (all messages sent) can now be re-enrolled in the same journey when a new qualifying event occurs — fixing refund reversal, chargeback recovery, and cart recovery flows that were silently blocked by old completed runs. Also fixed: email sending errors now show the actual failure reason instead of a generic "email service not loaded" message. **Where:** Site editor → Journeys → automated re-trigger flows (cart recovery, booking confirmation, etc.) **How to test:** - Trigger a journey for a contact and let it complete fully - Fire the same trigger event again (e.g. a new abandoned cart) and confirm a new run starts - Verify error messages from email sends show the real cause when they fail **Watch for:** Contacts silently not receiving messages from journeys they previously completed, or email failures showing "email service not loaded" instead of the actual error.
Contacts blocked by a previous cancelled journey run can now enter the same journey again — booking cancellations followed by re-confirmations, abandoned-cart rollbacks, and manual stop-then-restart flows all work as expected. Also fixed: messages that were actually delivered are no longer incorrectly marked as failed when a temporary database hiccup occurs after sending. **Where:** Site editor → Journeys → any journey with re-trigger scenarios **How to test:** - Trigger a journey for a contact, then cancel it - Re-trigger the same journey for the same contact and confirm a new run starts - Verify that previously delivered messages show "sent" status and are not flipped to "failed" **Watch for:** Contacts not entering a journey after a prior run was cancelled, or delivered messages showing a failed status after a database error.
A prepaid wallet lets you top up messaging credits via Stripe and send WhatsApp messages through our platform instead of billing directly to Meta — with 100 free utility conversations per month, automatic low-balance email alerts, and optional auto-recharge when your balance dips below a threshold. **Where:** Client portal → Messaging Credits (top nav) or Site editor → Settings → Integrations → Messaging tools **How to test:** - Open the Messaging Credits page and add credits via the Top Up button (Stripe Checkout) - Enable auto-recharge and set a threshold — let the balance drop and confirm the wallet is recharged automatically - Send a WhatsApp utility message and verify the free monthly allowance is consumed (not the paid balance) **Watch for:** Top-up credits not appearing after Stripe payment, auto-recharge not triggering at the threshold, or the free utility allowance resetting incorrectly.
You can now design multi-step messaging journeys with a drag-and-drop visual canvas — connect send, wait, branch, A/B test, webhook, and goal nodes to build flows that automatically message contacts based on their actions and attributes. **Where:** Site editor → left rail → Journeys → select or create a journey **How to test:** - Open a site and navigate to the Journeys section from the left rail - Create a new journey and add a "Send message" node connected to a "Wait" node and a branch - Save and activate — contacts entering the trigger should advance through steps automatically **Watch for:** Node connections not saving, branch paths not appearing, or the live validation badge showing errors when the graph is valid.
A dedicated template manager lets you create, view, and track approval status for WhatsApp message templates — with built-in validation that catches naming, variable sequencing, and button-mix errors before submission to Meta. **Where:** Site editor → WhatsApp → Templates **How to test:** - Navigate to a site's WhatsApp → Templates page - Create a new template with a name, category (Marketing/Utility/Authentication), and body with variables like {{1}} - Submit and verify the status updates when Meta processes it via the webhook **Watch for:** Template status not updating after submission, variable sequencing errors not being surfaced before submit, or the composer not loading existing templates.
The "Connect to payment provider" action in the store setup checklist now navigates directly to the Payments tab in Site Settings, saving you the step of finding it manually. **Where:** Site editor → Home tab → Store setup checklist → "Connect to payment provider" **How to test:** - Open a store/ecommerce site - On the Home tab, find the "Connect to payment provider" action - Click it — should open Site Settings with the Payments tab active **Watch for:** Opening the wrong settings tab or going to the general settings page.
The "Show Alternative Layouts" option has been moved from the Properties panel into the Quick Actions section so it's easier to find and one click closer when you want to explore layout options for a section. **Where:** Site editor → click any section → Quick Actions panel **How to test:** - Click a section in the site preview - Open the Quick Actions section in the right panel - "Show Alternative Layouts" should appear there **Watch for:** The option disappearing from both locations, or appearing in both places as a duplicate.
Asking the AI assistant to "restructure the navigation" or "link pages instead of sections" now produces an actual updated navigation — with real page links replacing anchor scrolls and properly grouped dropdown menus on capable sites. Previously, the same request returned a generic "use the Edit button in the top bar" guidance message instead of making the change. **Where:** Site editor → Design Assistant → type a navigation request (e.g. "Restructure the navigation menu and link the pages") **How to test:** - In the site editor, open the Design Assistant chat - Type "Restructure the navigation to link to the pages instead of scrolling to sections" - A navigation preview card should appear with updated links — anchor hrefs replaced with real page routes - On a site with many nav items, dropdowns should group related items (About, Services, etc.) - Confirm to apply the change **Watch for:** The assistant still responding with "use the Edit button" instead of making the change; anchor hrefs like `#contact` not being prefixed to `/#contact` for inner-page resolution.
Asking the AI assistant to restructure or relink your site navigation now produces immediate results — the assistant constructs the new menu and applies it in one step, instead of directing you to the manual editor. On sites with dropdown-capable headers, the new navigation is automatically grouped into logical sections (About, Services, Patient Info, etc.) with short labels, rather than outputting a long flat list. **Where:** Site editor → AI assistant chat → type "restructure the navigation" or "link the pages instead of the sections" **How to test:** - Open a site with multiple pages and ask the assistant to "restructure the navigation menu and link the pages" - The assistant should apply the change directly — not say "use the Edit button in the top bar" - On a dropdown-capable site, verify related items are grouped under a parent (e.g., multiple service pages under a "Services" dropdown) **Watch for:** Assistant responding with guidance to edit manually instead of applying the change; flat navigation appearing on a site that previously had dropdowns.
When the AI assistant updates your site's navigation, the confirmation card now shows a compact tree view of the new menu structure (pages, dropdown groups, links) rather than a dense form with a separate input for every nav item. You can quickly see what changed at a glance and accept or reject it. **Where:** Site editor → AI Assistant → any message that updates navigation → confirmation card **How to test:** - Ask the AI assistant "restructure my navigation" or add a new page via chat - The nav confirmation card should show an indented tree of your navigation items - Accept to apply, Reject to discard **Watch for:** The old multi-input form still appearing, or the tree preview being empty when navigation items exist.
Building a site with many pages could cause the progress indicator to freeze partway through, leaving you unsure whether generation was still running. The progress now advances correctly for all pages, and any AI service capacity errors that occur during generation are surfaced as clear messages instead of disappearing silently. **Where:** Site editor → Build phase → multi-page site generation progress **How to test:** - Build a site that generates 3+ inner pages - The progress bar should advance continuously and complete without freezing - If generation hits capacity limits, an error message should appear rather than silent failure **Watch for:** Progress still freezing at a specific page count, or capacity errors silently swallowed with no user feedback.
Saving your content in the Content Manager would sometimes trigger a spurious "Content changed externally" warning banner immediately after the save completed, even though the content hadn't been changed by anyone else. The banner is now suppressed for saves that originated within the modal itself. **Where:** Site editor → Content Manager → edit any field → Save **How to test:** - Open the Content Manager, edit any field, and click Save - The "Content changed externally" banner should not appear after the save succeeds - Confirm the banner still appears when content is genuinely changed externally (e.g., from another tab) **Watch for:** Banner being suppressed in cases where the content really was changed by another session.
On multi-page generated sites, action buttons ("Book", "Get started", "Schedule") were sometimes wired to scroll anchors on the same page instead of linking to the correct planned route (e.g., /booking, /services). The generation rule now prioritizes page-level links for multi-page sites, and user-approved CTA copy from blueprints is preserved exactly rather than rewritten by the dead-CTA rule. **Where:** Any generated multi-page site with action CTAs in hero, features, or other sections **How to test:** - Generate a multi-page site (e.g., restaurant or service business) with a /booking or /services route in the plan - Click hero and section CTAs — they should link to the planned route, not scroll to a same-page section - If the blueprint specifies exact CTA copy, verify it appears unchanged in the output **Watch for:** CTAs that scroll to "#contact" or "#booking" instead of navigating to the planned /contact or /booking page on multi-page sites.
When you trigger an AI action in the editor (refinement, image regeneration, quick action), the Design Assistant panel now automatically switches to the Chat tab so you can see the AI's response and progress without manually switching tabs. On other tabs, action chips now show a compact indicator instead of taking up the full width. **Where:** Site editor → Design Assistant panel → any AI action **How to test:** - Click a Quick Action (e.g., "Improve text") while on the Properties tab - The panel should automatically switch to Chat to show the AI response - Switch back to Properties — chips should appear smaller/compact while AI is active **Watch for:** Panel not switching to Chat during AI activity, or the panel staying on Chat when you're trying to use Properties.
After a site graduated from the Design phase to Build, the Design Assistant chat panel would show an empty conversation history even though prior chats existed. Previous refinements and conversations now appear correctly in Build-phase sites. **Where:** Client portal → Site editor → Design Assistant → Chat tab (on a site in Build phase) **How to test:** - Open a site that has been built (moved past the design/variation phase) - Open the Design Assistant chat panel - Prior conversations and refinements should be visible in the history **Watch for:** Chat history still appearing empty, or old messages missing for specific conversation types.
When you click a quick-action button ("Longer", "Punchier") or submit a mini-form in the site editor, the panel now switches to the chat tab immediately so you can see the AI working — instead of staying on the properties tab and showing nothing for up to 30 seconds before snapping to chat when the result arrives. Additionally, the "Make Editable" button no longer appears when clicking on images, where it would previously attempt to extract image URLs as text content. **Where:** Site editor → select any text element → use quick-action buttons (Longer, Punchier, etc.) or mini-form **How to test:** - Click a text element and then click "Longer" or "Punchier" - The panel should immediately switch to the chat tab showing AI activity - Click an image element — "Make Editable" should not appear in the panel for image nodes **Watch for:** Panel staying on the properties tab with no visible activity after clicking a quick action; "Make Editable" still appearing on image elements.
The "Love it", "Needs changes", and "Try again" feedback triage buttons in the Design Assistant were invisible in light mode — their near-white text rendered against a white panel background. The buttons now use a correctly-contrasting color palette when the editor is in light mode. **Where:** Site editor → Design Assistant → Chat tab → feedback triage buttons after an AI response **How to test:** - Switch the editor to light mode - Trigger an AI refinement so the feedback triage buttons appear - All three buttons should be clearly visible with readable labels **Watch for:** Buttons appearing as invisible or very faint against a white background in light mode.
When the editor's "Fix images" action targeted an `<img>` element that was referenced by other code (rather than directly in the section component), the fix was being routed through the general code refinement path, which could produce inconsistent results. These cases are now correctly routed to the dedicated image regeneration path, making image fixes faster and more reliable. **Where:** Site editor → Design Assistant → "Fix images" action on any image **How to test:** - Find an image in the editor that has quality or sizing issues - Use "Fix images" from the Quick Actions or Design Assistant - The image should be regenerated cleanly without spurious code changes around it **Watch for:** "Fix images" producing code changes unrelated to the image, or taking much longer than expected.
Images in gallery sections were rendering as their text description (alt text or URL) inside the Content Manager editor instead of showing the actual image preview. Gallery fields now display the image thumbnail alongside the edit controls, matching how images appear everywhere else in the editor. **Where:** Site editor → Content Manager → any gallery/image collection field **How to test:** - Open Content Manager on a site with a gallery or image grid section - Gallery items should show image thumbnails, not text - Clicking an image should open the Replace Image panel **Watch for:** Images still rendering as text strings, or thumbnails showing broken image icons.
Every button and call-to-action in a newly generated site now resolves to a real destination — a page in your site, a scrollable section, or a modal. Buttons whose copy promised an interaction (like "Start the Quiz" or "Book Now") could previously appear with no `onClick` or `href`, leaving visitors clicking dead elements. Pages in your plan that haven't been built yet are still valid link targets. **Where:** Site generation — any newly generated variation **How to test:** - Generate a new site and inspect all CTA buttons in the preview - Every button that promises an action ("Book", "Get Started", "Quiz") should scroll to a section, navigate to a page route, or open a sibling modal - No button should have a bare `href="#"` or no `onClick` unless it's a genuine placeholder (e.g. a footer logo) **Watch for:** Buttons that still navigate nowhere after generation, or links pointing to invented pages not in the site plan.
Searching for Lottie animations in the editor was failing due to an API change by LottieFiles. The search now uses LottieFiles' official GraphQL API and returns results correctly. **Where:** Site editor → Design Assistant → any element using Lottie animations → search for animations **How to test:** - Open the Lottie animation search in the editor - Search for terms like "loading", "success", "arrow" - Results should appear as before **Watch for:** Empty results or error messages from the search — these would indicate further API changes by LottieFiles.
When you click a text element in the editor that's truly hardcoded in code (not yet in your site content), Quick Edit now shows a "Make editable" button. One click extracts the text into your content store, rewrites the page to use it, and turns the element into a normal editable field. Runs ~5–15 seconds the first time per page; after that, every text element on that page edits instantly. Pairs with the search-and-resolve rescue shipped earlier today — together they cover (a) text the AST didn't reach but is already in content, and (b) text that isn't in content at all yet. **Where:** Site editor → click any text element → if Quick Edit shows "isn't connected to editable content", a green "Make editable (5–15s)" button now appears below it. **How to test:** - Click a heading that previously showed "isn't connected" with the new green button below → press "Make editable" → spinner for 5–15s → success toast → click the heading again → Quick Edit opens with the text editable - Click 3 different unbound texts in the same page rapidly → only one AI call fires; all three benefit - After a page has been "made editable" once, clicking new texts on the same page should resolve without showing the button (until you refine the page, which regenerates the file) - On a non-extracted (preview-phase) site the button doesn't appear at all — the sync endpoint only handles extracted-phase sites **Watch for:** Buttons that don't appear when expected (need contentPath missing + text content non-empty + extracted-phase site); duplicate AI calls when rage-clicking (the in-flight dedupe should ensure only one fires per page); page changing during sync (the endpoint reports `changedPages` and surfaces "page changed during sync — try again").
Sites whose generated Header components didn't support dropdown navigation were falling back to "flat" mode (no nested menus) due to AI output being truncated mid-file. The fixer now automatically escalates to a stronger AI model when an initial attempt produces truncated or non-conforming output, and the token budget scales with Header file size so large headers get enough room to rewrite fully. Dropdown navigation now succeeds on the vast majority of sites. **Where:** Site editor → any generated site with multi-level navigation **How to test:** - Generate a site with a multi-page plan and nested navigation items - Inspect the rendered Header — dropdown menus should render correctly, not as a flat list - Sites that previously showed only top-level nav links should now show submenus **Watch for:** Sites stuck in flat mode after generation — this should now be rare and only occur for genuinely unusual Header structures.
When the AI assistant proposes a navigation change, the preview card now shows an "Edit in Settings →" link alongside the accept/reject buttons. Clicking it opens Site Settings → Navigation so you can fine-tune the structure manually if the AI's suggestion isn't quite right. **Where:** Site editor → AI Assistant → any message that updates navigation → "Edit in Settings →" link in the preview card **How to test:** - Ask the AI assistant to update or restructure the navigation - A navigation tree preview should appear with Accept / Reject buttons - The "Edit in Settings →" link should appear below the preview - Clicking it should open Site Settings at the Navigation tab **Watch for:** Link not appearing on the preview card, or opening the wrong settings section.
Your site's navigation now stays in sync with your pages automatically. When you add a page via the AI assistant, it appears in the nav right away — no second manual step needed. When you delete or rename a page, the navigation reorganizes intelligently: orphaned dropdown groups are cleaned up, deleted page links default to the homepage instead of a random page, and anchor links like `#contact` are preserved through the change. Dropdown structures are also preserved when you switch between design variations so you don't lose your nav hierarchy. **Where:** Site editor → Pages tab → add / delete / rename a page **How to test:** - Ask the AI assistant to "add a Contact page" — it should appear in the site navigation automatically - Delete a page — any nav items linking to it should update; dropdowns that only contained that page should be removed - Rename a page — the nav label should update to match - Switch design variations — your dropdown nav structure should be restored on dropdown-capable variations **Watch for:** Pages added via AI chat that don't appear in the navigation, or deleted pages leaving broken nav items.
Exploring a new design variation is now a focused chat experience rather than a full-screen four-tab workspace. A compact modal opens over your current design, the AI asks 4–6 design preference questions via interactive chips, and generates a new variation when you're ready. A "More options" link is available to access Clone, Browse, or the freeform describe flow if you prefer those paths. **Where:** Site editor (Design phase) → "Try Something Different" button **How to test:** - In the Design phase of a site, click "Try Something Different" - A modal should open (not a full-screen takeover) with a chat interface - Answer the AI's preference questions using the chips or by typing - Click Generate when the button appears — a new variation should be created **Watch for:** The full-screen workspace still appearing, the Generate button not appearing after answering questions, or the modal blocking the preview entirely.
The recurring "This element isn't connected to editable content" guard now triggers far less often. Previously it appeared whenever the build-time content binder couldn't reach a particular text element — common on FAQ accordions, span shards inside headings, mapped carousels, and deeply-nested cards. Now the editor falls back to matching the clicked text against your site's content and opens Quick Edit whenever it finds a unique match. The change makes editability independent of how the AI structured the JSX. **Where:** Site editor → click any text element in the preview → right-side Quick Edit panel **How to test:** - Click a hero H1 that was previously showing "isn't connected" — Quick Edit should now open with the headline editable - Click an FAQ question or answer — should open Quick Edit if the text appears in your content - Click a span shard inside a larger heading — should resolve to the parent heading's content path - Click decorative chrome (icons, background divs) — still correctly shows "isn't connected" because there's no matching text to bind to **Watch for:** Text that appears in multiple places (e.g. the word "Learn More" used in 3 buttons) intentionally stays in "isn't connected" mode — ambiguous matches aren't auto-resolved to avoid editing the wrong place. Use Content Manager for those.
Every refinement was silently downgrading to a minimal fallback that only sent a handful of files to the AI, resulting in changes that missed your site's broader structure and multi-file routing. The root cause was a dropped database column that caused the context loader to error and fall back. Refinements now receive the full smart context — the same 38K-token page-aware selection that was always intended. **Where:** Site editor → Design Assistant → any refinement request **How to test:** - Open a site with 10+ files and make a refinement request - The AI should reference elements from across your site, not just the main file - Multi-file changes (e.g. updating a shared header across pages) should now apply to all affected files **Watch for:** "Smart context failed — using minimal fallback" in the server logs; refinements that only change one file when multiple files should have been updated.
Clicking the replace button on an image in the Content Manager used to open the operating system's file upload dialog, bypassing the in-app image browser entirely. It now opens the Replace Image panel so you can search the image library, upload files, or use AI-generated images — consistent with how image replacement works everywhere else in the editor. **Where:** Site editor → Content Manager → any image field → replace/edit button **How to test:** - Open Content Manager and find any image field - Click the replace/edit button - The Replace Image panel should open (not the OS file picker) - Confirm you can search, upload, or use AI from within the panel **Watch for:** The OS file picker still appearing, or the panel opening with no image options.
The preview thumbnail shown on your site's Mission Control home page now updates to show the page you're currently viewing rather than always showing the homepage. Switching between Pages now keeps the thumbnail in sync. **Where:** Client portal → Site editor → Home tab → site preview thumbnail **How to test:** - Open the site editor home page and note the preview thumbnail (shows homepage) - Navigate to a non-homepage page via the Pages tab - Return to the Home tab — the preview should now show the page you were just on **Watch for:** Thumbnail stuck on the homepage regardless of which page is active.
The "Replace dummy products" and "Upload images" buttons in the store setup checklist now navigate directly to the Content Library instead of doing nothing or opening the wrong place. Getting started with your store is now one click instead of hunting through menus. **Where:** Site editor → Home tab → Store setup checklist → "Replace dummy products" or "Upload images" **How to test:** - Open a store/ecommerce site in the editor - On the Home tab, find the store setup checklist - Click "Replace dummy products" — should open Content Library with the products section - Click "Upload images" — should open Content Library focused on images **Watch for:** Buttons that open the wrong tab or do nothing at all.
The AI's quick-pick suggestions during variation design now adapt to your site's specific context — a restaurant site gets food-focused style suggestions, a tech company gets SaaS-relevant ones. The AI's conversational tone has also been softened to feel more like a collaborative design conversation. **Where:** Site editor → Try Something Different → variation chat modal **How to test:** - Open the variation chat on different industry sites - Quick-pick chips should reflect the site's industry (e.g., "Warm and inviting" for a restaurant, "Clean and minimal" for a tech site) - The AI's responses should feel conversational, not clinical **Watch for:** Generic chip options unrelated to the site's industry, or robotic/technical AI responses.
Two crashes and a stale-state race condition in the variation chat modal are fixed. The modal now correctly passes your gallery feedback (liked/disliked designs) to the AI so preference questions are informed by what you've already reacted to. All preference chip questions now allow typing a custom answer, not just selecting a chip. **Where:** Site editor (Design phase) → "Try Something Different" → variation chat modal **How to test:** - Open the variation chat modal and send a message — no crash should occur - If you previously liked or disliked a design, the AI's questions should reflect your preferences - On any chip question, try typing a custom answer instead of selecting a chip — a text input should appear **Watch for:** "baselineContent is not defined" errors in the browser console; the modal crashing when the Generate button is clicked.
The variation design chat used to open by showing the AI's internal analysis of your site ("I notice your site uses a blue palette and professional tone..."), which felt clinical and exposed internal reasoning. It now opens with a simple welcoming prompt asking what you'd like to change, making the experience feel more natural. **Where:** Site editor → Try Something Different → variation chat modal → opening message **How to test:** - Click "Try Something Different" on any site - The first message from the AI should be a friendly design prompt, not a technical site analysis **Watch for:** The AI still opening with a hypothesis or analysis statement.
When you explore a new design variation, the AI now asks 4–6 questions that are specific to your site's industry and existing designs — covering mood, visual direction, content emphasis, layout, and structure. Previously these were static, generic prompts. If the personalized questions can't load, a fallback set of 3 general questions appears instead. **Where:** Site editor → Try Something Different → preference questions modal **How to test:** - Open a restaurant site and try "Try Something Different" — questions should be food/hospitality-themed - Open a tech SaaS site — questions should reference software/B2B themes - If the network is slow or unavailable, fallback questions should appear rather than an error **Watch for:** Generic questions appearing regardless of industry, or an error state with no questions at all.
When the AI asks design preference questions during variation generation (mood, visual style, layout choices), you can now type your own answer instead of being limited to the preset chips. An "Other — describe it" option appears alongside the standard choices on chip and multi-choice questions. **Where:** Site editor → Try Something Different → AI preference questions **How to test:** - Start a variation generation and reach the AI preference questions - On any chip-style question, look for the ability to type a custom answer - Enter a custom preference (e.g., "luxury and dark with gold accents") and continue - Verify the generated variation reflects your custom input **Watch for:** The custom input option not appearing, or typed answers being ignored during generation.
Clicking a version in the history panel for a site that had been moved to the Build phase would show a blank preview or fail to load if that version was originally saved during the Design phase. The preview now loads correctly regardless of which phase the version was saved in. **Where:** Site editor → History tab (or version history dropdown) → click any version **How to test:** - Open a site that has progressed from Design phase to Build phase - Open the History tab and click on an older version from before the phase change - The preview should load and show the site as it looked at that point in time **Watch for:** Blank previews, loading spinners that never complete, or error messages when clicking older versions.
WhatsApp button edits were being saved to the site's code but not written through to the content layer, so the changes could be overwritten the next time the AI made any refinement. Edits to WhatsApp phone numbers and messages now save to both layers and persist correctly. **Where:** Site editor → WhatsApp button → edit phone or message → save **How to test:** - Edit a WhatsApp button's phone number - Make an unrelated AI refinement afterwards (e.g., change a heading) - The WhatsApp number should remain unchanged after the refinement **Watch for:** WhatsApp edits reverting after any subsequent AI operation.
Editing your WhatsApp number or pre-filled message in the site editor previously routed through the AI refinement pipeline, which could take several seconds or silently drop the change. Edits now save directly to the site code in one round-trip — the same speed as editing any other text field. Additionally, the "pre-filled message" field now starts blank when no message has been configured, instead of incorrectly defaulting to the button label text (which would show "WhatsApp Us" as a pre-filled chat message for visitors). **Where:** Site editor → click a WhatsApp button → edit phone number or pre-filled message **How to test:** - Click a WhatsApp button in the editor - Edit the phone number — change should apply immediately with no "Applying via AI..." step - Clear the pre-filled message field and save — visitors clicking the button should land in an empty chat, not one pre-filled with the button label **Watch for:** Edits taking more than 2 seconds, or the message field still defaulting to the button text.
The "Build full site" button was failing with a database error for all users after a recent platform update removed an internal column. Clicking it now correctly creates your working build site. **Where:** Site editor → Design gallery → "Build full site" button **How to test:** - Open a site in the design gallery view - Click "Build full site" on any design - Confirm the site transitions to build mode without an error message **Watch for:** The button returning a generic error or the site staying in design mode after clicking
Clicking anchor navigation links on published sites was scrolling the target section behind the fixed header bar, making it appear partially hidden. The scroll now accounts for the header height so sections land in the correct visible position. **Where:** Published site → any anchor navigation link (e.g. "Services", "About", "Contact" in the nav) **How to test:** - Publish a site and open the live URL - Click an anchor nav link that scrolls to a section below - Confirm the section heading is fully visible and not hidden behind the fixed navigation bar **Watch for:** Sections scrolling into view but still partially covered by the nav bar
Previously, typing an instruction in the annotation popup queued it in a "Changes Queued" panel that required a separate "Apply All" click. Annotations now send directly to the AI as a chat message the same way text edits and image replacements do, with a toast confirming the change is being applied. **Where:** Site editor → click any element → type an instruction in the annotation popup → Submit **How to test:** - Click a section in the site preview to open the annotation popup - Type an instruction (e.g. "Make this section's background dark blue") and submit - Confirm a "Applying via AI..." toast appears and the change is processed in the chat — no "Changes Queued" panel appears **Watch for:** Instructions still going to the queue instead of being applied immediately
When clicking a site element to leave an annotation while the Design Assistant panel was open, the popup appeared off-screen or partially clipped. It now correctly transforms iframe coordinates to account for sidebar offsets and displays fully visible next to the clicked element. **Where:** Site editor → click any element in the preview → Annotate / leave a note **How to test:** - Open the site editor with the Design Assistant panel open (right sidebar visible) - Click on an element in the site preview to open the annotation popup - Confirm the popup appears next to the element and is fully visible, not off-screen **Watch for:** The annotation popup appearing at the wrong position or outside the visible area
After an auto-fix was applied to a page, the preview overlay code was accidentally saved into the page's source — meaning on the next load the overlay was injected a second time, causing "symbol already declared" errors that made the page completely unloadable. **Where:** Site editor → any page where an auto-fix has been applied **How to test:** - Open a site with one or more auto-fixed pages - Reload the preview for a fixed page - Confirm the page loads without console errors; previously affected pages (like a coaching or multi-section page) should render cleanly **Watch for:** Pages showing a blank/broken iframe after an auto-fix is persisted; browser console showing "The symbol 'FormModal' has already been declared" or similar duplicate-symbol errors
Dedicated listing pages (e.g. /menu, /services) on published catalog sites were capped at the same item limit used for the homepage section preview (typically 6 items), hiding the rest. Listing pages now display all available items from the catalog. **Where:** Published site → dedicated listing page (e.g. /menu for a restaurant, /services for a services site) **How to test:** - Publish a site with a catalog content type that has more than 6 items (e.g. a restaurant with 10+ menu items) - Visit the dedicated listing page on the published site (e.g. /menu) - Confirm all items appear, not just the first 6 **Watch for:** The listing page still showing only the homepage limit (e.g. 6 items) even with more in the catalog
Several naming issues affected sites with auto-generated catalog pages: labels were getting truncated ("OfficeGaller" instead of "Office Gallery"), page URLs used camelCase ("/officeGallery") instead of readable kebab-case ("/office-gallery"), and nav items showed "Office Gallery Listing" instead of "Office Gallery". All three are now fixed. **Where:** Site navigation and Pages tab — affects any site that auto-generates non-standard catalog pages (galleries, tiers, custom collections) **How to test:** - Generate a site with custom gallery or collection sections (e.g. a dental site with an "Office Gallery") - Open the Pages tab and check that page names are correctly singularized and readable - Preview the site nav and confirm no truncated labels or "Listing" suffix appears - Inspect page URLs and confirm they use lowercase-hyphen format (e.g. `/office-gallery`, not `/officeGallery`) **Watch for:** Truncated nav labels (ending mid-word), "Listing" or "Listings" appearing in nav text, camelCase or snake_case page URLs
Searching for catalog content (e.g. a specific menu dish, a service listing, or an event) in the content search returned zero results even when the content existed. The search index now includes all catalog rows, so content from menus, services, events, and other catalog sections is findable. **Where:** Site editor → Content Map → search for any catalog item **How to test:** - On a restaurant or service site with catalog content, open the Content Map in the editor - Search for a specific catalog item name (e.g. a menu dish or a service name) - Confirm the item appears in search results with the correct page attribution **Watch for:** Catalog items still returning zero results, or items showing "unmapped" page
Clicking the icon or text label inside a WhatsApp header button opened the generic button editor instead of the WhatsApp configurator (phone number + message fields). Only clicking the button's outer padding worked. The quick-action resolver now correctly identifies all click targets inside a WhatsApp link and opens the right panel. **Where:** Site editor → click any WhatsApp button in the site preview → "Edit WhatsApp message" quick action **How to test:** - Open a site that has a WhatsApp button in the header - Click directly on the WhatsApp icon (phone icon inside the button) - Confirm the "Edit WhatsApp message" panel opens with phone and message fields - Repeat by clicking the "WhatsApp Us" text label — should open the same panel **Watch for:** Clicking the icon or label opening a generic "Edit button" panel instead of the WhatsApp configurator
When both AI models in a dual-model generation declared the same collection type (e.g. "resources" or "menu"), the generation pipeline would create two or three identical listing pages — producing duplicate nav entries and confusing page structure. The pipeline now deduplicates collection declarations at staging time so each collection type is created exactly once. **Where:** Site editor → Pages tab — affects catalog-vertical sites (restaurant, services, real estate, etc.) generated on the Pro tier **How to test:** - Generate a Pro-tier catalog site (restaurant or similar) and open the Pages tab after generation - Confirm each catalog section (Menu, Gallery, etc.) appears only once in the page list - Previously affected sites would show two "Resources Listing" or "Menu Listing" entries **Watch for:** Duplicate page entries in the Pages tab after site generation; identical listing pages with the same slug
When generating a catalog site (restaurant, services, etc.), all visible homepage items were marked as "featured" by default — making the featured toggle useless since everything already appeared first. Now only a small selection is featured initially, leaving room for you to promote your favorite items using the star toggle. **Where:** Client portal → Pages tab → catalog content type (e.g. Menu) → star/featured toggle **How to test:** - Generate a new restaurant or services site - Open the content editor for a catalog section (e.g. Menu) - Confirm only 2–3 items are featured by default, not all of them - Toggle a non-featured item's star — confirm it moves to the top of the homepage section **Watch for:** All items still appearing featured, or the star toggle having no visible effect on ordering
Inner pages (About, Services, individual service pages) were importing the same Testimonials, FAQ, Contact, and Process sections from the homepage and rendering them unchanged — making every page feel like a copy of the home page with only 2-3 unique sections sandwiched in. The AI now follows a strict composition rule: lead with a page-specific hero, build 2-4 focused sections unique to that page, and close with one targeted CTA. **Where:** All generated inner pages — Client portal → Pages tab → any non-homepage page **How to test:** - Generate a multi-page site (e.g. a dentist or professional services site with About, Services, and individual service pages) - Open several inner pages in the site preview - Confirm each page has a unique hero and at least 2-3 sections specific to its purpose rather than repeating the full homepage layout **Watch for:** Inner pages that look nearly identical to the homepage; testimonials, FAQs, and contact forms appearing on every single page unchanged
The main action button and business avatar in Mission Control used the site's brand color, making them unreadable on sites with light palettes (such as cream or pastel themes). Both now use consistent high-contrast styling. **Where:** Client portal → Mission Control home screen (site avatar and primary action button) **How to test:** - Open a site with a light primary brand color (e.g. cream, pale yellow, or light gray) - Go to Mission Control (the site dashboard home tab) - Confirm the business avatar and the main CTA button ("Review homepage" or similar) are clearly readable **Watch for:** Invisible text on a same-color background for the avatar or the primary button
After building multiple pages, the homepage thumbnail in Mission Control frequently showed "Preview unavailable." The preview now debounces rapid updates during a build and retries with longer timeouts to handle slower server warm-up, significantly reducing failed preview loads. **Where:** Client portal → Mission Control home → homepage thumbnail preview **How to test:** - Run a full site build that adds multiple pages - After the build completes, check Mission Control's homepage thumbnail - Confirm it loads the site preview instead of showing "Preview unavailable" **Watch for:** "Preview unavailable" persisting after the build completes and waiting 30+ seconds
When a site build is running in the background after clicking "Continue in background," Mission Control now shows a prominent "Your pages are being built" card and hides the "Plan the rest of your site" button — so users can see progress is happening instead of wondering if something went wrong. **Where:** Client portal → Mission Control home → while a site build is running in background **How to test:** - Start a multi-page site build via "Build all pages" or the site planner - Click "Continue in background" during the build - From Mission Control, confirm a build-in-progress card is visible and the "Plan the rest of your site" CTA is hidden **Watch for:** The build card not disappearing once the build completes
Moving sections or editing text on pages that have early-loading guards (e.g. auth checks before rendering) silently failed because the section path identifier was being misread. Editing and moving sections now works reliably across all page types. **Where:** Site editor → select a section → drag to reorder or use the AI to edit text **How to test:** - Open a site page that has multiple sections - Drag a section to a new position — confirm it moves correctly and the change is saved - Ask the AI to edit text in a specific section of an inner page — confirm the edit applies to the right section **Watch for:** Section moves reverting after save, or AI edits going to the wrong section
Two navigation issues fixed: header navigation menus with dropdown sub-items now render and open correctly, and navigation links are automatically updated after an autonomous site build completes — so users no longer see stale nav after pages are generated. **Where:** Published site header navigation (for dropdown menus) and Client portal → Pages tab (after using "Build all pages") **How to test:** - Generate a site with multi-level navigation (parent items with children) - Open the published preview and hover/click parent nav items — confirm dropdowns open - Use "Build all pages" and after completion, check that the navigation reflects the newly created pages **Watch for:** Dropdown menus not opening, or navigation still showing old anchor links after a build
After adding catalog pages (e.g. a menu or services listing), some navigation items remained as anchor links pointing at homepage sections that no longer exist, causing broken navigation. Nav items now automatically upgrade to proper page routes when the corresponding pages are created. **Where:** Site navigation (header and footer) on sites with catalog content types (restaurant, services, events, etc.) **How to test:** - Generate a catalog-type site (e.g. restaurant) and use "Build all pages" to add listing pages - Open the published preview and click each navigation link - Confirm all links navigate to real pages — no "#benefits" or "#services" anchor-style broken links **Watch for:** Nav links scrolling to non-existent sections or showing no visible response when clicked
Landing pages created by typing a custom description in the "+" dialog from the Landing Pages section were incorrectly placed in the main Site section instead. They now correctly stay in Landing Pages with the proper URL prefix and layout. **Where:** Client portal → Pages tab → Landing Pages → "+" button → type custom description **How to test:** - Go to the Pages tab in the site editor - In the Landing Pages section, click "+" - Type a custom page description (don't pick a preset recipe) and submit - Confirm the new page appears under Landing Pages (not under Site) **Watch for:** The created page appearing under "Site" instead of "Landing Pages"
The scaled-down page thumbnails in the Pages tab and site map view were clipped due to a CSS geometry mismatch, making them appear cut off. Previews now display the full page content and scroll correctly. **Where:** Client portal → Pages tab (page thumbnail previews) and Site Map view **How to test:** - Open the site editor and go to the Pages tab - Click on any page to see the scaled preview thumbnail - Confirm the full page content is visible and not clipped at the bottom or sides **Watch for:** Thumbnails still appearing cut off or the scrollbar being hidden behind the page edge
The dark floating pill that appeared at the top of the editor during every AI refinement was redundant with the in-chat loading state already visible in the Design Assistant panel. It has been removed for a cleaner editing experience. **Where:** Site editor → Design Assistant chat → any AI refinement request **How to test:** - Open the site editor and type a change request in the Design Assistant chat - Confirm no floating dark pill appears at the top of the editor while the AI processes the request - Confirm the chat itself still shows a loading indicator **Watch for:** The chat showing no loading state at all (there should still be an in-chat indicator)
Sites using scroll-triggered animations that toggled multiple CSS classes at once (e.g. `ring-2 ring-[var(--color-primary)]`) were throwing a browser error that broke those animations silently. Affected sites are now auto-repaired on next load, and the AI no longer generates this pattern on new sites. **Where:** Published sites and site previews using scroll-triggered "reveal" or "highlight" animations **How to test:** - Open a site that uses GSAP ScrollTrigger animations with multi-class toggles - Scroll through the page and confirm animations fire correctly without console errors - Inspect the generated code — `toggleClass` should now use callback functions instead of space-separated class strings **Watch for:** Animations that previously worked but now don't fire (unlikely, but watch for regressions in sites with complex scroll sequences)
The section alternatives picker was using a generic layout vocabulary for all section types, producing similar designs across services, gallery, and hero sections. It now picks the correct layout vocabulary per section type, generates more structurally varied options, and previews show proper colors and styling instead of appearing blank. **Where:** Site editor → click any section → "Try a different layout" / section alternatives picker **How to test:** - Click a Services, Gallery, or Hero section and open "Try a different layout" - Confirm the alternative thumbnails show distinct visual structures (not all card-grid variants) - Confirm the thumbnails display with the site's brand colors and styling (not blank/white boxes) **Watch for:** Thumbnails still appearing unstyled, or alternatives for different section types all looking the same
When the section alternatives picker opens and the AI is still generating options, a spinner and "Generating alternatives — they'll appear here shortly" message now appears so users know something is happening rather than seeing a mostly-empty panel. **Where:** Site editor → click any section → "Try a different layout" / section alternatives picker **How to test:** - Open a site with a section that has no pre-generated alternatives - Click the section and choose "Try a different layout" - While the AI generates options, confirm a spinner appears in the modal instead of a blank area **Watch for:** The spinner not disappearing once alternatives arrive — it should switch to showing the layout thumbnails automatically
A subset of AI-generated sites failed to display because the generated code contained a specific template expression pattern that the build step could not parse. The validator now detects and rewrites this pattern automatically, so affected sites render without manual intervention. **Where:** Any site that showed a blank or broken preview after generation **How to test:** - Open a site that previously failed to preview (especially gallery-style sites) - Confirm the preview renders all sections without errors - Verify the auto-fix log shows no "Unexpected token" parse errors **Watch for:** Sites rendering blank after generation with a "build failed" or "unexpected token" error in the auto-fix output
Two fixes for the WhatsApp inline editor: label-only changes can now be saved even when the phone number cannot be parsed (e.g. custom-shortened wa.me links), and the "Saved" confirmation no longer appears prematurely when opening the advanced configuration modal. **Where:** Site editor → click WhatsApp button → edit label or phone in the inline panel **How to test:** - Click a WhatsApp button in the site preview to open the inline editor - Edit only the button label (leave the phone number unchanged) and click Save - Confirm the save succeeds and "Saved" appears — even if the phone field shows a parse warning - Also confirm "Saved" does NOT appear when you click "Configure" to open the full modal **Watch for:** Save button staying disabled when editing only the label, or "Saved" appearing while the modal is still open
Clicking a WhatsApp button in the site header was incorrectly opening the navigation link editor instead of the WhatsApp phone/message configurator. This is now fixed — clicking anywhere on the WhatsApp button (icon, text, or surrounding area) opens the right editor. **Where:** Site editor → click the WhatsApp button in the site header **How to test:** - Open a site that has a WhatsApp button in the header - Click on the WhatsApp button (try clicking the icon, the text label, and the button border) - Confirm the WhatsApp configurator opens (phone number + message fields), not a nav link editor **Watch for:** The navigation link editor appearing instead of the WhatsApp configurator
Several click-resolution and labelling issues made Quick Edit frustrating to use: clicking a hero headline or service card often said "isn't connected to editable content" even when it was; field labels showed the generic wrapper name ("ITEMS") instead of the actual field ("Name" or "Description"); the "Where used" list showed sibling items as if they were repeats on other pages; and image URL fields showed a raw text input instead of the image upload flow. All four are now fixed. **Where:** Site editor → click any text or image element in the preview → right-side Quick Edit panel **How to test:** - Click a hero H1 or a service card name — Quick Edit should open with the correct field label ("Name", "Headline", etc.), not "ITEMS" - Click the same content key on two different pages; "Also used on" should only appear if the exact path repeats on the other page - Click an image element — the panel should send you to Content Manager's image upload, not a text input with a URL - Click a decorative element (icon, background div) — you should see "isn't connected to editable content. Try clicking the text inside it." with a stale-path variant for missing keys **Watch for:** Hero H1s or paragraph elements still landing on the wrapper instead of the leaf (check that `data-content-path` reaches the text node); "Also used on" showing items from the same page
The Content Manager panel has been redesigned from a large fullscreen modal into a narrow side drawer that pins to the right of the preview. The site preview stays fully clickable behind it, so you can spot-edit inline without closing the panel, then immediately see the result in the iframe. **Where:** Site editor → any content edit trigger (e.g. "Manage all services" button) → right-side Content Manager drawer **How to test:** - Open the Content Manager from any section trigger - Confirm it opens as a ~420px right-side drawer (not a full modal) - Click inside the preview iframe while the drawer is open — you should be able to make inline edits without closing the drawer - Use the Maximize/Minimize button in the drawer header to switch to the full-panel workbench view and back; the preference should persist after page reload - "Not currently shown on this page" group should be expanded by default; selecting a section should collapse the picker so the form fills the panel **Watch for:** Iframe clicks not registering when the drawer is visible; the persistent layout preference (localStorage `content-workbench:layoutMode`) not surviving a hard reload; "Reveal in preview" Eye icon not scrolling the iframe to the matching section
The "Also on other pages" section in the Content Quick Edit panel now correctly shows only other pages — not the page you are currently editing. Previously, a slug comparison bug caused the current page's own entries to appear in the list, making it look like content was shared with itself. **Where:** Site editor → click any editable field → Quick Edit panel → "Also on other pages" section **How to test:** - Open a multi-page site, navigate to any page with shared content (e.g. a phone number in the header) - Click that field to open Quick Edit - Confirm "Also on other pages" lists only the other pages, not the page you are viewing **Watch for:** Current page still appearing in the cross-page list; shared-content entries missing from the list entirely on sites whose page slugs start with "/"
Several site editor features — switching between design variations, viewing version history, and applying auto-fixes — were silently returning empty results for sites stored in the new relational format. The service layer now reads variation data from the correct location, restoring full functionality across all affected features. **Where:** Site editor → Design panel; Site editor → Version history; Background auto-fix **How to test:** - Open any site and click between Design 1, 2, and 3 — confirm each design loads distinct content - Open a site's version history — confirm it shows the expected number of saved versions - Trigger auto-fix on a site with known code issues — confirm fixes are applied **Watch for:** Design switching appearing to work but reverting on reload; version history showing 0 versions when versions exist; auto-fix completing with no changes made
A small number of sites showed a blank preview with a "ReferenceError: inset is not defined" error in the browser console. The crash was caused by a malformed template in the preview rendering layer. Affected sites now load and display correctly. **Where:** Site editor → Preview pane; any site where the preview appeared blank **How to test:** - Open a site that previously showed a blank preview - Confirm the preview renders the full site design - Select an element on the canvas — confirm the selection highlight appears correctly **Watch for:** Blank white preview pane with no content; console errors mentioning "inset is not defined" or "selection-inset"
Clicking the WhatsApp button (or other contact-details fields) in the editor now opens an inline Quick Edit form — instead of saying the content is "managed by an external data source" when it isn't. **Where:** Site Editor → click any contact-details field or a WhatsApp button → right-hand panel **How to test:** - Open the editor on any site - Click the WhatsApp button (or your email link, or any contactDetails field) - Confirm the right panel shows a friendly Quick Edit input you can type into, plus an "Edit WhatsApp message" action that opens the phone+message configurator - Save a change and confirm the preview updates **Watch for:** A field that genuinely IS synced from a connected integration (e.g. a Shopify product feed) should still show the "synced from your connected … source" message — that's intentional.
On restaurant, education, and events sites, items generated with menu cards, course listings, or event entries were showing broken or placeholder images even when photos had been matched to them. The fulfilled image URLs were being stored under the wrong field name and never reached the rendered template. Images now go to the correct field and appear immediately after generation. **Where:** Generated site preview → any section showing menu items, courses, or event listings **How to test:** - Generate a restaurant site or education site - Confirm menu/course/event cards display real images (not broken placeholders) - Open Content Manager for one of those items — confirm the image field is populated **Watch for:** Menu cards still showing placeholder images on newly generated sites; images missing only for items added via the collection editor (not the generation path)
Visiting the Organization Settings page showed a red error banner — "permission denied" — preventing users from viewing or editing their organization's members, invitations, and settings. The underlying database permission grants have been restored and the page loads correctly. **Where:** Dashboard → Organization Settings **How to test:** - Open Dashboard → Organization Settings - Confirm the members list, pending invitations, and incoming invitations all load without a red error banner - Confirm you can invite a new member and see the pending invitation appear **Watch for:** Red error banner at the top of the Organization Settings page; member list or invitation list loading indefinitely
When you click a field that is also used on other pages of your site (e.g. a phone number in the header that appears on every page, or a testimonial pulled into multiple sections), the Quick Edit panel now shows an "Also on other pages" section listing exactly which pages share that content — so you know that editing it here will affect those pages too. **Where:** Site editor → click any editable field → Quick Edit panel → "Also on other pages" section (only visible when the exact content path is shared across pages) **How to test:** - On a multi-page site, click a field you know appears on more than one page (e.g. a site-wide phone number or business name) - Confirm the Quick Edit panel shows an "Also on [N] other pages" section listing those pages - Click a field that is unique to this page — confirm the "Also on" section does not appear - Edit the shared field and confirm the change is reflected on the other pages it's linked to **Watch for:** The "Also on" section appearing for fields that are NOT actually shared (false positives); the section not appearing at all when it should (false negatives); slow load on sites with many pages (the index is built lazily on first query)
Applying any refinement (text edits, style changes, AI instructions) on a site that was recently generated returned a 500 server error and the change was lost. The root cause was the refinement handler reading site data via a legacy query that no longer returns variation files. All refinements now complete successfully. **Where:** Site editor → Refinement panel (any edit type) **How to test:** - Generate a new site, then immediately request a text refinement - Confirm the refinement completes and the updated text is visible in the preview - Confirm the version history shows the refinement was saved **Watch for:** "Internal server error" when submitting a refinement on a brand-new site; changes appearing to process but not showing up in the preview
On restaurant, real-estate, and other catalog-type sites, the items shown in the preview (menu dishes, property listings, etc.) could flip between different sets of content on successive page reloads — sometimes showing the database-backed rows, sometimes showing older inline content. Content is now stored in a single authoritative location and the preview renders the same items consistently. **Where:** Site editor → Preview pane for restaurant, real-estate, hospitality, and other catalog-type sites **How to test:** - Open a restaurant or real-estate site with catalog items - Note the items shown in the menu or listings section - Reload the page several times — confirm the same items appear each time - Switch between design variations — confirm each variation shows consistent items **Watch for:** Menu items or property listings changing between page loads; "Design 1" and "Design 2" showing different content sets despite using the same underlying data
Fresh site generation was silently failing to blend the AI-produced content with your site blueprint's defaults, causing new sites to render with incomplete or missing sections. The missing function import has been restored and generation now produces fully merged content as intended. **Where:** Any newly generated site — seen immediately after the first site generation completes **How to test:** - Create a new site and run generation - Open the preview and check that all sections (hero, about, services, contact, etc.) appear with real content - Confirm section text is not blank or showing placeholder defaults **Watch for:** Sections that show empty strings or generic fallback text when content should be AI-generated; console errors referencing "deepMergeContent is not defined"
When you type a business name in step 1 of the site creation wizard, that name is now always used as the site name — even if the AI later suggested a different business name based on your industry. Previously, the AI could overwrite your typed name with an invented one (e.g. "Bella Rustica" → "Sunrise Yoga Studio") and, if you exited the wizard early, the wrong name would stick. **Where:** Admin → Blueprint Wizard → Step 1 (business name input) → save or advance **How to test:** - Start a new site in the wizard, type a short business name in step 1 - Complete or abandon the wizard after the AI processes it - Confirm the saved site row uses your typed name, not an AI-generated alternative **Watch for:** Sites saved as "Untitled Site" when a clear name was typed; names longer than 80 characters (treated as a description and not used as site name — that's intentional)
Clicking the star icon to mark a content item as featured (e.g. a menu item, product, or testimonial) was saving the wrong value on the first click. The item would appear toggled on screen but the old value would go to the server — the correct value only saved 800ms later, or not at all if the editor was closed in that window. The star now saves the correct value immediately. **Where:** Client portal → Pages → any catalog section → Content Manager → star icon next to an item **How to test:** - Open Content Manager for a menu or product section - Click the star icon on an item to mark it as featured - Close the editor immediately (within 1 second) - Reopen — confirm the item is still marked as featured **Watch for:** Featured status reverting to unfeatured after closing the editor; the homepage featured section not updating to reflect the newly starred item
Clicking between Design 1, Design 2, and Design 3 on a site was silently doing nothing — the preview would flicker but the selection would snap back to the previous design. The bug was present for about 11 days and affected all sites with multiple design variations. Switching now persists correctly. **Where:** Site editor → Design panel → click "Design 1 / 2 / 3" tabs **How to test:** - Open a site with multiple design variations generated - Click Design 2 — confirm the preview switches and the tab stays highlighted - Reload the page — confirm Design 2 is still the active selection - Switch back to Design 1 and confirm that also persists **Watch for:** The active design reverting after a page reload; switching appearing to work in the preview but not saving to the server (check the network tab — the PATCH should return 200)
On multi-page sites, clicking Undo could silently fail — the button appeared to work, but the change you just made was still there. The undo algorithm was picking the nearest version by time regardless of which page was affected, so undoing a hero-section edit would restore the home page file instead, leaving the hero unchanged. Undo is now page-scoped: it finds the previous version that touched the same page and reverts only that page. **Where:** Site editor → make an AI edit on any page → click Undo **How to test:** - On a multi-page site, open a non-home page (e.g. /about), make an AI refinement - Click Undo and confirm the About page reverts to its previous state (not the Home page or an unrelated page) - Repeat on the home page to confirm the existing behavior is unchanged **Watch for:** Undo reverting the wrong page; the Undo button being greyed out when it should be available; version history not showing the correct page-scoped entries after refining
When stock-photo search returned the same image (under different signed URLs) for several niche queries — for example a roofing site whose gallery filled with six copies of the same off-topic photo — the duplicates now get caught and the gallery is regenerated with AI imagery for visual variety. **Where:** Any generated site with a gallery, team grid, or testimonials section. **How to test:** Generate a site in a niche industry (specialty trades, B2B services) where stock photos may have weak matches. Open the gallery section in the preview and confirm each tile shows a distinct image, not the same one repeated. **Watch for:** A single gallery still using duplicate images, or AI generation failing for the whole group (falls back to the static placeholder map).
A follow-up to the gallery duplicate-photo fix: if multiple gallery slots referenced the same broken URL, they were previously counted as separate gaps and could skew image replacement decisions. The replacement logic now deduplicates by URL within each gallery group before tallying, so the whole group is replaced uniformly when stock photos fall short. **Where:** Any generated site with a gallery, team grid, or testimonials section containing broken or repeated image URLs. **How to test:** - Generate a site in a niche where stock images are weak - Confirm gallery tiles are replaced uniformly — either all stock photos or all AI-generated, not a mix caused by miscounting **Watch for:** A gallery that still shows one repeated image among otherwise distinct tiles.
Asking the AI assistant to replace images on a specific inner page (e.g. "update the hero image on the Safety page") was silently replacing the homepage image instead. The page and section filters now correctly match images stored under inner-page content keys, so the replacement lands exactly where requested. **Where:** Site editor → Design Assistant → "Replace the [section] image on [page]" **How to test:** 1. Open a multi-page site and ask the assistant to update an image on a non-homepage page. 2. Confirm the image changes on the specified page and that the homepage image is untouched. 3. Also test a section-level request (e.g. "change the hero background on the About page") to confirm section scoping works. **Watch for:** The homepage image changing when you asked for an inner-page image; an inner-page section image staying unchanged despite the assistant reporting success.
When you fork a design into a build site, the full conversation history from the design phase is now copied to the build site. Previously the build editor started with an empty chat, making it impossible to reference or continue earlier conversations. **Where:** Site editor (build site) → Design Assistant chat panel **How to test:** 1. Open a design site that has chat history, then fork it to a build site via "Start building". 2. Open the build site editor and expand the Design Assistant panel. 3. All prior conversation entries from the design phase should be visible. **Watch for:** The chat panel showing empty on a freshly forked build site when the design site had conversation history.
A code validation step had been accidentally removed from the collection page generator, meaning generated collection templates and listing pages could contain syntax errors that would break the page silently. The validation gate is restored for both page types, so a bad generation is caught and retried rather than saved. **Where:** Client portal → Site editor → Pages → Add collection **How to test:** - Create a site and add a collection (e.g., blog posts or products) - Add the collection template or listing page - Confirm the generated page loads correctly in preview with no blank sections **Watch for:** Collection template or listing pages generating with a blank preview or visible JavaScript errors in the console.
When you fork a design into a build site, all version snapshots from the design phase are now visible in the build editor's Version History panel — so you can roll back to any design-phase state without switching back to the design editor. **Where:** Site editor (build site) → Version History panel → "Design Phase History" section **How to test:** 1. Open a design site, make a few refinements, then fork it to a build site. 2. Open the build site editor and click Version History. 3. A "Design Phase History" divider should appear with purple-badged entries from before the fork. 4. Click Restore on a design-phase entry — the build site should update to that snapshot. **Watch for:** Design-phase entries not appearing (means the fork didn't carry the parent_site_id); restoring a design-phase version overwriting wrong data; the Protect/Unprotect buttons showing on design-phase entries (they should be hidden).
Chat messages in the Design Assistant panel were rendering with light-colored backgrounds (pale blue and green bubbles) against the panel's dark background, making them hard to read. The panel now consistently uses dark-mode styling for all message threads. **Where:** Site editor → Design Assistant panel → any conversation thread **How to test:** - Open the Design Assistant panel and send a refinement request - Confirm chat bubbles and the empty-state card use readable contrast against the dark panel background **Watch for:** Light-colored chat bubbles or white/gray text on dark background in the activity feed
Generated sites that imported only non-existent icon names while also using namespace-style icon access (e.g. `Icons.ArrowRight`) would crash at runtime because the entire import was stripped instead of being converted to a namespace import. The fix now detects this pattern and preserves a valid namespace import rather than leaving `Icons` undefined. **Where:** Any generated or refined site preview/published page that uses icon components **How to test:** 1. Open a generated site whose components reference icons via `Icons.SomeName` syntax. 2. Confirm the site preview renders without an "Icons is not defined" console error. 3. Refine a section that uses icons — icons should still resolve after refinement. **Watch for:** "Icons is not defined" errors in the browser console; icons appearing blank or causing a full-page crash after AI-generated or refined sections are loaded.
Clicking a navigation link (e.g. "View Gallery") on a page that didn't contain the target section was causing the preview iframe to reload and display the editor content again — a confusing "preview inside the preview" loop. The link now correctly navigates to the homepage and scrolls to the right section. **Where:** Site editor → preview iframe → any page with anchor navigation links **How to test:** - Open a multi-page site in the editor (e.g. one with a Gallery section only on the homepage) - Navigate to a sub-page in the preview, then click a nav link like "View Gallery" - Confirm it navigates to the homepage and scrolls to that section, not a blank reload **Watch for:** Anchor links that do nothing, or the preview refreshing without navigating to the correct section
Published sites were built from the base blueprint only, ignoring the active design's content overlay. Sections whose text, images, or details lived in the active variation rendered blank or with placeholder values in the live site while the editor preview showed them correctly. Publishing now merges both layers before generating the static site. **Where:** Site editor → Publish → live published URL **How to test:** 1. Open a site where the active design has content different from the base (e.g. custom hero headline). 2. Publish the site and visit the live URL. 3. All sections should match exactly what you see in the editor preview. **Watch for:** Any section in the published site showing generic placeholder text or a blank image when the editor preview shows real content — that was the symptom of this bug.
When connecting forms to a site failed to save to the database, the assistant was still reporting "Connected N form(s)" and applying unsaved code. On the next refresh the change disappeared with no explanation. The assistant now returns an honest error message so you know to try again. **Where:** Site editor → Design Assistant → "Connect my form" or form-related refinement **How to test:** 1. Trigger a form-connection refinement. 2. If saving fails (e.g. network interruption), the assistant should display an error asking you to try again — not "Connected 1 form(s)". 3. A successful connection should still work and persist as before. **Watch for:** The assistant reporting success for a form connection that doesn't survive a page refresh.
The "Refining your site…" status pill was positioned over the site preview area, appearing as a floating dark box on top of the page content. It now sits inside the toolbar row so it's clearly an editor control and doesn't obscure the preview. **Where:** Site editor → Design Assistant → trigger any refinement → watch the status indicator **How to test:** 1. Open the site editor and ask the assistant to make a change. 2. While the refinement runs, the "Refining your site…" pill should appear inside the toolbar band at the top — not floating over the preview content. **Watch for:** The pill still overlapping the iframe content, or covering toolbar buttons.
The second design variant (V2) previously made a single AI call with no fallback — a temporary provider error would silently drop V2 and the site would ship with only one design option. V2 now tries multiple providers in sequence, matching the reliability of the primary design path. **Where:** Client portal → Site editor → Generate site → design variant selector **How to test:** - Generate a new site and confirm two design variants are available in the editor - Switch between the variants and confirm both look visually distinct and complete **Watch for:** Sites consistently generating with only one design variant, or the variant selector showing a placeholder for V2.
Two bugs in the section layout alternatives picker were fixed: clicking a section to explore alternatives was not opening the popup (the click handler was clearing it immediately), and selecting an alternative was not persisting the change to the site (it wrote to a deprecated column that is no longer read). Both are resolved — click opens the picker and applying an alternative saves to the correct location. **Where:** Site editor → click a section in the preview → Explore Alternatives **How to test:** 1. Open a multi-design site in the editor. Click on a section (e.g. the hero). 2. The Explore Alternatives popup should open. Select an alternative and click "Use this". 3. The section should update in the preview and the change should persist after refreshing. **Watch for:** The popup closing immediately after click without opening; an alternative appearing to apply in the preview but reverting on refresh.
A "503 model overloaded" error from the AI provider previously caused site generation to fail outright with no retry — leaving users with nothing to show after waiting for generation. The pipeline now automatically falls back to a backup provider whenever the primary returns a temporary error, the same way stalls and quota errors already did. **Where:** Client portal → Generate site **How to test:** - Generate a site and confirm it completes successfully - Confirm generation does not produce a server error page when the AI provider is under load **Watch for:** Site generation ending with a hard server error instead of retrying with a fallback model.
When the secondary design variant failed quickly (e.g., a brief AI provider error), it accidentally started a countdown that would cancel the primary design too — turning one recoverable failure into a complete generation loss. The timer now only starts when the secondary design actually succeeds and is ready to promote. **Where:** Client portal → Site editor → Generate site **How to test:** - Generate a site and confirm at least one (and ideally two) design variants are available - If only one variant appears, confirm it still loads correctly in preview rather than showing an error **Watch for:** "Both designs failed" errors appearing when only one design had a temporary issue.