Content edits to marketing arrays like logo strips, USP bullet lists, and scrolling marquees were being silently discarded on sites with any third-party integration (e.g., Calendly, Shopify). Changes appeared to apply but weren't saved to the database. These edits now persist correctly. **Where:** Client portal → site editor → AI chat refinement (any edit targeting logo, USP, or marquee content) **How to test:** - Open a site that uses a third-party booking or e-commerce integration - Ask the AI to update the logo strip or a USP list item - Refresh the page and verify the change persisted - Also test removing an item from a marquee or list: the item should be gone after refresh **Watch for:** Content edits reporting "Applied" in the chat but reverting after a page refresh; logo strip or USP items silently resetting
Switching between design variations was silently deleting any inner pages (About, Services, Contact, FAQ, etc.) that had been added after the initial site generation. Those pages are now carried over when you pick a different design. **Where:** Client portal → design preview phase → variation switcher (V1 / V2 cards) **How to test:** - Generate a site and finalize it to extract pages - Add a new inner page (e.g. /about) - Switch to the alternate design variation - Confirm the /about page is still present **Watch for:** Inner pages missing from the Pages list or 404 on the inner page URL after switching variations
When switching between design variations or while auto-fix runs after a switch, the loading overlay is now fully opaque — the previous design's content no longer bleeds through and creates a confusing double-image effect. **Where:** Client portal → design variation switcher (V1/V2 toggle) **How to test:** - Open a site with multiple design variations - Switch from one variation to another - Verify the loading overlay is solid white/opaque and the old design is not visible underneath it during the transition **Watch for:** Old design content (hero text, images) ghosting through the loading overlay during a design switch
Editing the site navigation via the AI assistant was silently failing for sites whose header component used an older menu format — the change was confirmed but nothing visually updated. Navigation now uses a single canonical format end-to-end, so assistant edits always take effect. **Where:** Client portal → AI assistant → "Update the navigation menu" (or similar) **How to test:** - Open a site in the client portal - Ask the assistant to add, rename, or reorder a nav item - Verify the header reflects the change immediately without a manual refresh **Watch for:** Nav items reverting after a variation switch (separate issue from the fix here)
Sites generated before a platform update were failing to publish due to outdated style imports in inner pages. These are now automatically cleaned up at publish time, so affected sites can publish without requiring manual fixes or support. **Where:** Client portal → Publish button **How to test:** - Take a site that was generated more than a week ago and has not been published recently - Click Publish - Confirm the publish completes without an error about missing exports **Watch for:** Publish failure with "No matching export for import" or similar SSR compile error
The Page Planner's outline view was crashing when a section had an undefined type or an incomplete call-to-action (e.g. missing button label). Sections with missing data now render gracefully with fallback text instead of breaking the entire planner. **Where:** Client portal → Pages tab → Page Planner → outline/plan view **How to test:** - Open the Page Planner and generate a page plan - Confirm the plan outline renders all sections without crashing - If any section shows "undefined" or blank, verify the planner still opens and the remaining sections are visible **Watch for:** Page Planner showing a blank white screen; individual section cards disappearing from the plan; crash errors in the browser console when opening the planner
After planning a new page, the editor now shows a compact outline — page name, slug, and a numbered list of sections — instead of immediately opening a dense field-by-field form. The detailed edit form is still one click away when you need it. **Where:** Client portal → Pages tab → Add page → review plan **How to test:** - Open a site in the client portal - Go to the Pages tab and add a new page - Confirm the plan displays as a readable card with section chips, not an expanded form - Click the edit button to open the full form **Watch for:** The form opening automatically on plan display (regression), or section list being empty
After planning and generating a new page in the Page Planner, the planner workspace was staying open on screen after the page was added. It now closes itself and returns you to the main editor view once generation completes, so you don't need to manually dismiss it. **Where:** Client portal → Pages tab → Page Planner → Generate Page **How to test:** - Open the Pages tab and click to plan a new page - Fill out the page plan and click Generate Page - Confirm the Page Planner workspace closes automatically once the page is added - Verify the new page appears in the pages list **Watch for:** Workspace remaining open after generation; workspace closing before generation finishes; new page not appearing in the list
Four bugs in the Page Planner workspace are resolved: the AI assistant could confuse a fresh planning conversation with a prior session (causing it to append new plans to old chats), the "Improve design" and "Publish site" action chips were visible inside the planner where they don't belong, and the AI now correctly tracks which sections the user has laid out for an in-progress page so iterative edits go to the right place. **Where:** Client portal → Pages tab → "+ Add Page" → Page Planner workspace **How to test:** - Open the Page Planner via the Pages tab - Select a page type in the purpose gate and click Continue — the AI should start a fresh conversation, not pick up from a previous session - Confirm no "Improve design", "Publish site", or "Viewing: /" labels appear inside the planner workspace - Propose a page plan, then ask the AI to change a section — it should update the current plan card, not try to edit an existing page **Watch for:** AI appending new page plans to old chat history; or site-level action chips appearing inside the page planner; or the AI editing the wrong page when asked to modify a plan.
Overlay popups and modals that were enabled in the editor were not appearing on published sites — the overlay containers were missing from the exported HTML. Published sites now include the correct overlay markup so overlays trigger as configured. **Where:** Client portal → Publish → live published site (any overlay/popup configured via the Overlays feature) **How to test:** - Set up a popup overlay on a page (e.g., a contact modal triggered by a button) - Publish the site - Visit the published site URL and trigger the overlay - Verify the overlay appears correctly **Watch for:** Overlays that work in the preview but are invisible or missing on the published site
Clicking "Refine Page" on the homepage was losing the page context and dropping back to the default view instead of opening the homepage editor. This is now fixed — the homepage page parameter is preserved correctly through the navigation. **Where:** Client portal → site preview → "Refine Page" button on the homepage **How to test:** - Open any site in the client portal - Navigate to the homepage in the preview - Click "Refine Page" - Verify the editor opens on the homepage (not a different page or a blank state) **Watch for:** Clicking "Refine Page" on the homepage bringing up the wrong page or appearing to do nothing
A small number of sites had files with missing names, which caused the site editor to crash on load when the AI assistant tried to build its context. The editor now handles these gracefully and loads without error. **Where:** Client portal → site editor (loading the editor for an affected site) **How to test:** - Open the site editor for a site that previously showed an error on load - Verify the editor loads without crashing and the AI assistant suggestions work correctly **Watch for:** "Cannot read properties of undefined (reading 'toLowerCase')" error when opening the site editor
An intermittent AI model behavior could cause the site generator to fall back to only one design instead of two. The system now detects this early and retries automatically, so you consistently get two designs to choose from after generation. **Where:** New site flow → generating site → design selection **How to test:** - Create a new site and complete the blueprint chat - Click "Build full site" and wait for generation to complete - Confirm two distinct design variations are shown in the preview **Watch for:** Only one design appearing in the variation selector after generation; generation completing but landing on a blank or single-option screen
In some cases only one design was generated instead of two, because the AI returned an unexpected format that caused the first design attempt to fail silently and promote the second design into its slot. The system now detects this pattern early and retries the first design independently, so both designs are generated correctly. **Where:** New site flow → after Blueprint chat → "Build full site" → design selection screen **How to test:** - Create a new site, complete the blueprint chat, click "Build full site" - After generation completes, confirm two distinct design options are shown in the design picker **Watch for:** Only one design appearing on the design selection screen; both designs appearing identical
An org owner with an older lower-privilege access record on a specific site would silently lose admin abilities (including Publish) for that site, seeing a 403 error. The platform now always grants the highest role across all permission sources, so org ownership is never overridden by a narrower site-level record. **Where:** Client portal → Publish button (or any admin action) **How to test:** - Log in as an org owner - Open a site and attempt to publish - Confirm publish succeeds without a permission error **Watch for:** Publish showing "403 Forbidden" or the Publish button being disabled for org owners
The preview iframe inside the Mission Control side panel (used when editing settings, pages, or other features while keeping the site visible) was rendering at a different scale than the main editor view. Both views now use the same scaling logic, so the preview looks consistent regardless of where you're working. **Where:** Client portal → any MC panel (Settings, Pages, etc.) → site preview on the right **How to test:** - Open the site editor in full view and note the preview scale - Click into Settings or Pages to open a Mission Control panel - Confirm the site preview in the panel matches the scale from the full editor - Resize the browser window and confirm the preview still scales correctly **Watch for:** Preview appearing too small or too large in the panel view; content cut off or overflowing the preview area
Sites that had both a component file (e.g., `Footer`) and a config file with a similar name (e.g., `footer-config`) were publishing broken — all inner pages crashed with an "element type is invalid" error because the wrong file was being used as the Footer component. The correct component is now always selected. **Where:** Client portal → Publish (affects the live published site for certain site structures) **How to test:** - Publish a site that has a config-only block named `footer-config` or `header-config` alongside real component files - Visit the published inner pages (About, Contact, Services, etc.) - Verify all pages render correctly without a white screen or element-invalid error **Watch for:** Inner pages (not the homepage) showing a blank/error screen on the published site while the homepage works fine
Clicking Skip on the "Love it / Almost / Not quite" design triage card would dismiss it for the current session, but reloading the page brought it back. The dismiss state is now saved per site and per design variation, so skipping once keeps it gone on future visits. Skipping one variation still shows the card for other variations. **Where:** Client portal → design preview phase → variation chat sidebar → triage card **How to test:** - Open a site in preview phase and confirm the triage card appears - Click Skip to dismiss it - Hard-reload the page (Ctrl+R or Cmd+R) - Confirm the triage card does not reappear for the same variation - Switch to a different variation — confirm the card still appears there **Watch for:** Card reappearing after reload; Skip on one variation hiding the card on all variations
Selecting a template as inspiration during site setup now shows an inline card in the chat with the template's color palette, design style, and visual DNA — so you can confirm the AI picked up the right inspiration before generating. The old "Use this design" button that would get stuck mid-conversation has been replaced with a single "Use as inspiration" action that correctly carries the template's style into generation. **Where:** Blueprint chat → Ideas panel → template gallery → Use as inspiration **How to test:** - Start building a new site and open the Ideas panel in blueprint chat - Browse and select a template - Confirm an inspiration card appears in the chat showing the palette and design highlights - Proceed to generate — the resulting site should visually reflect the inspiration template's style **Watch for:** Inspiration card not appearing after template selection; generated site ignoring the template style; palette swatches showing wrong colors
Asking the voice assistant to "show styles" or "show me color options" was silently doing nothing — it called a navigation action that didn't exist, while the AI confirmed it had opened the styles panel. The command now correctly opens the Brief panel where style and color controls live. **Where:** Site editor → Voice mode → ask "show me styles" or "show color options" **How to test:** - Enable voice mode in the site editor - Say or type "show me styles" or "show color options" - Confirm the Brief panel opens with style/color controls visible **Watch for:** Voice assistant saying it opened styles but nothing happening in the UI
Messages sent via voice mode in the design assistant chat were displayed with a distinct purple background, making them visually inconsistent with typed messages from the same conversation. Voice messages now use the same styling as text messages so the conversation history looks uniform. **Where:** Client portal → design assistant chat → voice mode messages **How to test:** - Open the design assistant and send a few typed messages - Switch to voice mode and send a voice message - Confirm the voice message appears with the same visual style as the typed messages (no purple background) **Watch for:** Voice messages appearing unstyled or invisible; typed messages accidentally gaining the old voice style
Asking the AI assistant to add a page (e.g., "add a Services page") would silently fail — the AI proposed a plan but nothing appeared in the interface because a missing field caused an internal error with no visible feedback. The workspace now opens automatically whenever the AI proposes a page plan, and failed tool calls show a visible error message instead of dead silence. **Where:** Client portal → Chat assistant → any request to add or plan a new page **How to test:** - Open the chat assistant on any site - Type "add a pricing page" or "I need a contact page" - Verify the Page Planner workspace opens automatically with the AI's proposed plan - If the AI can't complete the request, verify you see an error message rather than nothing happening **Watch for:** The chat assistant returning an empty response with no plan card appearing — that's the previous silent-failure behavior.
The AI chat widget now defaults to shorter, more conversational answers (2 paragraphs max unless detail is requested), matches the business's tone, and is more disciplined about calls-to-action — only surfacing real CTAs and skipping them on factual or quick-answer responses. When information isn't explicitly documented, the widget will acknowledge the gap and offer a reasonable inference with a clear hedge rather than refusing to answer. **Where:** Any published site with the AI chat widget enabled **How to test:** - Open the chat widget on a published site and ask a simple factual question (e.g., "What are your hours?") - Verify the answer is concise (1-2 short paragraphs, not a multi-paragraph essay) - Ask something not explicitly in the site content (e.g., "Do you offer discounts for non-profits?") - Verify the widget acknowledges the gap and offers a reasonable inference rather than a flat "I don't know" **Watch for:** Responses that are excessively long for simple questions, or the widget revealing technical system details (model names, retrieval methods, etc.) — that should never happen.
A trash icon now appears when hovering any section row in the Content tab, letting you permanently remove a content section you no longer need. A confirmation dialog explains the consequences (the site will fall back to defaults for that section, and the AI chat widget will stop referencing it) and warns if the section is shared across multiple pages. **Where:** Client portal → any site → Content tab → hover a section row → trash icon **How to test:** - Open the Content tab on a site with multiple content sections - Hover over a section row — verify a trash icon appears on the right - Click the trash icon and confirm in the dialog - Verify the section disappears and a "Section removed" toast appears - Check that data-source-managed sections (e.g., auto-synced content) do NOT show a trash icon **Watch for:** Sections that show a trash icon but fail to delete, or sections that reappear after removal (which would indicate a sync is recreating them).
Top-level image arrays (logo strips, partner galleries) and plain string lists (service areas, brand names, categories) were previously fed through the wrong editor, causing image URLs to render as individual characters and string lists to show corrupt field labels. Image arrays now open in the gallery editor, and string lists get a clean line-by-line textarea. **Where:** Client portal → any site → Content tab → sections containing a logo strip, image gallery, or a list of text items (service areas, brands, policy notes, etc.) **How to test:** - Open the Content Manager on a site that has a logo strip or partner images section - Verify images render as thumbnails in a gallery editor, not as character-indexed text fields - Open a section containing a list of plain strings (e.g. service areas, brand names) - Verify it shows as a textarea with one item per line, not a broken object form **Watch for:** Any array section that still shows character fields (0='h', 1='t', etc.) — that's the pre-fix symptom and means the section wasn't picked up by the new detector. Report the section name and site ID.
Typing in a service-areas or brands text list used to trim and filter on every keystroke, causing the cursor to jump to the end whenever you typed a space or started a new line. Normalization now happens only when you leave the field. The AI Rewrite button is also now available for these list sections, and service-area URL lists no longer incorrectly open in the image gallery editor. **Where:** Client portal → any site → Content tab → string list sections (Service Areas, Brands, Categories, etc.) **How to test:** - Open the Content Manager and navigate to a list section (service areas, brands, or similar) - Click into the textarea and type a new item — verify the cursor stays where you placed it as you type - Add a trailing space or press Enter for a blank line mid-edit — cursor should not jump - Leave the field (click elsewhere) — verify blank lines are trimmed and empty items removed at that point - Confirm the "AI Rewrite" button appears for list sections **Watch for:** A service-area list (URL paths like `/north-london`) that opens as a gallery editor with image thumbnails — that's the over-detection bug and would mean the fix didn't land.
A bug in the finalization step could silently overwrite React layout components (Footer, Header, Navigation) with configuration-only data blocks of the same name, causing sites to crash with React errors when visiting any page that used those components. Affected sites have been restored; the root cause is fixed to prevent recurrence. **Where:** Any site that went through finalization (publishing or design selection) **How to test:** - Load any recently published or finalized site and navigate between pages - Verify the footer, header, and navigation render correctly on every page - Check that no "Element type is invalid" React errors appear in the browser console **Watch for:** Pages that render blank or show a white screen after finalization, or a footer that appears as raw JSON/object data instead of a visual component.
Sites built with a dark color scheme using CSS variables (rather than hardcoded Tailwind dark classes) were generating form popups with a white background and dark text — an unreadable combination on dark sites. The form modal generator now reads the site's theme color definitions to detect dark backgrounds and applies appropriate dark modal styling. **Where:** Any generated site with a dark color scheme → contact form or any popup form **How to test:** - Generate a site using a dark-themed template (e.g. one with a near-black background) - Open the contact form or any popup form — verify it appears with a dark background and light text matching the site - Also verify light-themed sites still get white form popups **Watch for:** White form popup appearing on dark-background sites; form text being illegible against the modal background.
When a user liked multiple templates in the Ideas panel and one was selected as the inspiration for generation, the system could non-deterministically pick any of the liked templates instead of the one the user chose first. Generation now respects the user's selection order. **Where:** Client portal → blueprint chat → Ideas panel → like multiple templates → Generate **How to test:** - Like two or more templates in the Ideas panel, with a specific preference for the first one - Generate a site — verify the output reflects the style of the first selected template, not a random other one **Watch for:** Generated site resembling a different template than the one the user favored in the Ideas panel.
Site generation could show a "Generation timed out" error while the site was still generating and about to succeed — this happened because the browser's polling window was 5 minutes but complex generations (those requiring retry attempts) can take up to 10 minutes. The polling window now matches the actual server limit, and a final status check accurately surfaces genuine failures instead of reporting them all as timeouts. **Where:** Client portal → new site flow → generation progress screen **How to test:** - Generate a site that triggers a retry (e.g. one requiring two attempts) - Verify the progress screen continues polling through the retry rather than cutting off at 5 minutes with a false timeout error **Watch for:** "Generation timed out" appearing when the site is still generating; successful generations being reported as failures.
A new Knowledge section under Settings lets site owners see and manage every source feeding the AI chat assistant — auto-synced site content, uploaded PDFs, imported URLs, and manual entries — all in one place. Each source shows its status (indexed, pending, or failed), chunk count, and last-synced time, with options to view, edit, re-index, or delete. A "Sync Now" button processes any pending sources immediately. **Where:** Client portal → any site → Settings → Chat → Knowledge **How to test:** - Open Settings → Chat → Knowledge on any site that has had content added - Verify you see a list of knowledge sources grouped by type (auto-synced content, PDFs, URLs, manual entries) - Click "+ Add" and try adding a manual entry with a title and some content - Click "Sync Now" and verify the new entry reaches "indexed" status within a few seconds - Try importing a URL and verify it appears in the list with a "pending" then "indexed" status **Watch for:** The Knowledge tab not appearing in Settings, or "Sync Now" running indefinitely without sources reaching "indexed" status.
Two bugs in the newsletter popup add-on are fixed: the scroll-based trigger now works correctly on shareable preview links (previously it showed the popup immediately instead of waiting for 50% scroll), and on dark-themed sites the popup dialog now uses a light card background so text is readable instead of appearing dark-on-dark. **Where:** Any published or shareable preview site with a newsletter popup configured to appear at 50% scroll (or other triggered modes) **How to test:** - Add a newsletter popup to a site with trigger set to "50% scroll" - Open the shareable preview link (`/preview/[token]`) in a new tab - Scroll halfway down the page — popup should appear only after 50% scroll, not on load - Open a dark-themed site's preview and verify the newsletter popup dialog has a white/light card background with readable dark text - In the site editor canvas, verify the popup still appears immediately as a preview placeholder (editor behavior unchanged) **Watch for:** The popup appearing instantly on the shareable preview before any scrolling — that's the pre-fix behavior. Also watch for unreadable text in the popup on any dark-background site.
A regression caused the finalization step to silently skip all inner pages (About, Services, Blog, etc.) while still reporting success — users would see no error but the pages were never created. The fix corrects the crash that caused this and adds validation so any page that fails content-shape checks is logged visibly rather than disappearing quietly. **Where:** Site editor → finalize/publish flow that generates additional inner pages **How to test:** - Generate a site with a blueprint that includes multiple pages (About, Services, Contact) - Finalize the site — verify all expected inner pages appear in the Pages list - Verify no pages are silently missing after finalization completes **Watch for:** Pages list showing only the homepage after finalization, with no error message; inner pages (About, Services) not appearing despite finalization reporting success.
The Page Planner workspace was showing recipe chips ("Pricing", "Contact", "FAQ", etc.) and unrelated site-action suggestions ("Publish site", "Generate SEO") even after the AI had already proposed a plan — cluttering the interface mid-flow. These chips are now hidden once a conversation is underway. The workspace header also updates to show the page being planned rather than a static tagline. **Where:** Client portal → Pages tab → Page Planner workspace (mid-flow state) **How to test:** - Open the Page Planner and let the AI propose a plan for a new page - Verify no recipe chips or "Publish site" / "Generate SEO" suggestions appear in the chat area while the plan is visible - Verify the header changes from the default intro copy to "Planning · [Page Name]" once a plan exists - Open a fresh (empty) Page Planner workspace — verify recipe chips DO appear as a helpful starting point **Watch for:** Recipe chips ("FAQ", "Blog post", etc.) visible in the left chat pane while the AI has already produced a plan card on the right.
Adding a new page now starts with a purpose selector — choose a page type (Services, About, Pricing, FAQ, Contact, and more) or describe it in your own words before the AI plans it. The workspace moves to a full-width view with chat on the left and the live plan on the right, giving both panels room to breathe instead of cramming them into a narrow rail column. **Where:** Client portal → Pages tab → "+ Add Page" button **How to test:** - Click "+ Add Page" from the Pages tab - Verify a purpose gate appears with page type options (Services, About, Pricing, FAQ, Contact, etc.) and a free-text fallback - Select a page type and click Continue — the AI should start generating a plan immediately without requiring you to retype the request - Verify the workspace shows chat on the left and a rich plan card on the right with full section details **Watch for:** The old narrow rail layout still appearing, or the purpose gate being skipped and going straight to a blank chat input.
When using the Page Planner to plan a new page, the AI assistant was showing homepage-focused context ("Viewing: Homepage /") and launch-readiness prompts ("You have 7 pages ready, check your SEO") that belong to the main editor rail, not the page planning workspace. These have been replaced with planner-specific copy so the AI stays focused on the page being planned. **Where:** Client portal → Pages tab → "+ Add Page" → Page Planner workspace **How to test:** - Open the Page Planner via the Pages tab - Verify there's no "Viewing: Homepage /" footer in the chat - Verify the empty state shows planner-focused copy rather than site launch readiness messages - Ask the AI about the current hero copy — it should not describe the homepage **Watch for:** AI answering questions about the homepage instead of the page being planned; launch-readiness or design-feedback messages appearing inside the planner.
When the AI matches a new page to a structurally similar page already on the site, it now mentions this in chat ("I'll model this on @Plans — similar structure, different copy") rather than silently showing only the reference chip on the plan card, which was easy to miss. **Where:** Client portal → Pages tab → "+ Add Page" → Page Planner workspace → AI response after proposing a plan **How to test:** - Open the Page Planner on a site that already has multiple pages (e.g. a Services page) - Ask the AI to add a similar page type — verify the AI's chat response mentions which existing page it's using as a reference - Confirm the plan card also shows the reference chip **Watch for:** AI proposing a plan without mentioning the reference page in its response, even though the plan card shows a "Reference: @PageName" chip.
Three issues in the Page Planner workspace are resolved: clicking Cancel on a single-card plan immediately re-opened the edit form (making Cancel appear broken), a planning session started from the purpose gate could re-submit the AI seed prompt if the workspace briefly unmounted (causing a duplicate AI message), and Cmd/Ctrl+Enter on an empty purpose gate silently did nothing instead of being blocked. **Where:** Client portal → Pages tab → "+ Add Page" → Page Planner workspace **How to test:** - Propose a single-page plan and open the edit form — click Cancel and verify the form closes and stays closed - Select a page type from the purpose gate and Continue — verify the AI receives the request only once, with no duplicate messages - On the purpose gate screen with nothing selected, press Cmd+Enter — verify nothing happens (no silent error, no empty submission) **Watch for:** Edit form reopening immediately after clicking Cancel; AI receiving the same planning request twice; Ctrl+Enter triggering an empty submission.
When clicking "Create page" while the page plan edit form was open, a timing issue could cause duplicate or stale page entries to appear in the Pages list. The fix eliminates the race condition by returning the page data synchronously from the commit step, so Create always produces exactly one new page. **Where:** Client portal → Pages tab → "+ Add Page" → Page Planner → edit form open → Create page **How to test:** - Propose a page plan, open the edit form to review it, and click "Create page" - Verify exactly one new page appears in the Pages list, with the correct name and slug **Watch for:** Two copies of the new page appearing in the Pages list; page appearing with a stale name from a previous edit.
Three issues in the newly redesigned Page Planner are resolved: the Create Page button silently did nothing when the edit form was open (the common case for single-page plans), the AI directive text appeared verbatim in the chat box making users re-read and resubmit it, and a microphone button in the purpose gate implied voice input was available there when it wasn't. **Where:** Client portal → Pages tab → "+ Add Page" → Page Planner workspace **How to test:** - Open the Page Planner and let the AI propose a single-page plan - Verify the edit form opens automatically and the "Create page" button is clickable - Click Create — verify the page is created without having to close the edit form first - Select a page type from the purpose gate and click Continue — verify the AI starts planning immediately without any text appearing in the chat input that you'd need to submit manually **Watch for:** Clicking "Create page" and nothing happening; or a long AI prompt appearing in the chat textarea after selecting a page type from the gate.
Sites with analytics enabled were failing to publish with a cryptic file-not-found error when Google Analytics credentials weren't configured on the server. Publishing now skips the analytics auto-provisioning step gracefully when credentials are absent, so sites publish successfully regardless of GA setup status. **Where:** Client portal → Publish button (or Settings → Domain) **How to test:** - Publish a site on an environment where Google Analytics credentials are not configured - Verify the site publishes successfully without an error related to analytics **Watch for:** Publish failing with "ENOENT: no such file or directory" or similar error referencing analytics keys; sites that cannot be published at all due to a missing GA setup.
Sites with stats sections displaying values like "₹200Cr+", "24/7", or "15,000+" could show a white screen with a red error instead of rendering the page, because the animated counter tried to call `.toFixed()` on a string. Non-numeric stat values now display as plain text without animation, and numeric-looking strings like "15,000+" animate correctly. **Where:** Any generated site with a stats/metrics section using formatted or symbolic values **How to test:** - View a generated site that includes a stats section with non-numeric values (e.g. "24/7", "₹200Cr+", "5,000+") - Verify the page renders correctly — numeric values animate, non-numeric values display as-is without error **Watch for:** White screen with red error text on pages that include a stats or metrics section.
When you pick a template as a style reference in the blueprint Ideas panel, its design DNA (color palette, typography, layout patterns) is now injected into both generated variations — so your new site looks like a thoughtful adaptation of the template rather than an unrelated design that ignores your inspiration choice. **Where:** Blueprint chat → Ideas panel → Templates → select a template → Generate site **How to test:** - Start a new site and open the blueprint chat - In the Ideas panel, pick any template as a reference - Generate the site and view the two design variations - Verify both variations visually reflect the chosen template's style (colors, layout feel) adapted to your business type **Watch for:** Variations that look generic and unrelated to the selected template — that would mean the style brief isn't reaching the generation prompts.
Hovering a font, corner-style, or density preset in the Tweaks panel used to silently re-apply the site's body background colour and hero text-shadow on top of the live preview, so unrelated parts of the page would visibly recolour every time the cursor crossed a swatch. Each Tweak knob now scopes its preview overlay to only the visual properties it controls — fonts only restyle text, corners only resize radii, density only changes spacing. Color hover still wouldn't fully match what `Apply` produces if the AI baked in literal Tailwind brand classes (e.g., `bg-orange-500`) instead of `var(--color-primary)`. A site-repair pass now rewrites those baked-in classes back to theme variables so primary-color swatches actually recolour every section. **Where:** Site editor → Tweaks (sparkles button on the preview toolbar) **How to test:** - Open a site in the editor and click the Tweaks button (top-right of preview) - Hover over the **Heading** dropdown options or one of the **Designer pairings** — only typography should change; the page background and hero gradient must stay still - Hover over **Corner style** presets (Sharp / Soft / Pill) — only button/card corner radii should change - Hover over **Density** presets — only spacing/line-height should respond - Hover a **Primary color** swatch — every brand-colored element (buttons, headings, accent borders, "why us" tints) should flip in unison; previously some sections stayed the original brand colour **Watch for:** Any section that doesn't recolour with the rest when you hover a primary swatch — that's the leftover hardcoded-class symptom and should be rare now. If it still happens on a specific site, mention the site ID.
The "Add New Site" card is now the first item in the site grid on the dashboard, making it easier to find when you have many existing sites. Previously it appeared at the end of the list. **Where:** Dashboard → Sites grid **How to test:** - Log in and go to the dashboard - Check that the "Add New Site" card appears as the first card in the grid, before any existing sites **Watch for:** The card appearing at the end of the grid instead of the beginning. The card missing entirely when you have many sites.
When adding a new page to a site that already has several pages, the page type selector now clearly indicates which types are already present. This helps avoid accidentally adding a duplicate page (e.g., a second About page). **Where:** Client portal → Site editor → Pages tab → Add Page button **How to test:** - Open a site that already has an About page and a Contact page - Click "Add Page" and look at the page type options - Confirm that About and Contact are marked as already existing, or are filtered/grouped to indicate they're in use **Watch for:** The dialog still showing all page types without indicating which are already present. Confusion about whether you can have multiple pages of the same type.
The "Add to site" popover is now state-aware: if a feature (like the announcement bar or chat widget) is already active on your site, the row shows "Edit" and "Remove" buttons instead of "Add". This makes it much easier to manage features you've already enabled without hunting through settings. **Where:** Client portal → Site editor → "+" toolbar button → Add to site popover **How to test:** - Add an announcement bar to a site using the "+" popover - Open the "+" popover again — the announcement bar row should now show "Edit" and "Remove" options instead of "Add" - Click "Edit" and confirm you can modify the announcement bar settings - Click "Remove" and confirm the announcement bar is removed from the site - Reopen the popover — the row should be back to "Add" state **Watch for:** Active add-ons still showing "Add" instead of "Edit/Remove". The "Remove" button not actually removing the feature. "Edit" not opening the right settings.
The "Add to site" popover now clearly shows add-ons that are disabled or unavailable (instead of silently hiding them), and keyboard/screen-reader navigation within the panel has been improved for active rows. **Where:** Client portal → Site editor → "+" toolbar button → Add to site popover **How to test:** - Open the Add to site popover by clicking the "+" button in the site editor toolbar - Confirm any unavailable add-ons are shown in a visually distinct disabled state with a tooltip explaining why - Navigate the popover using keyboard only (Tab/Enter/arrow keys) and confirm all rows are reachable and interactive **Watch for:** Disabled add-ons appearing clickable (they should be grayed out and non-interactive). Keyboard focus getting trapped or skipping rows.
Asking the AI assistant to update the site navigation (add a menu item, rename a link, reorder pages) was silently doing nothing — the tool call appeared to succeed but no changes were saved. The navigation update tool is now fully wired up so changes take effect immediately and are reflected in the site menu. **Where:** Client portal → Site editor → AI assistant → "Add X to the navigation" / "Rename the About link to Team" **How to test:** - Open the design assistant and ask it to add a page to the navigation menu (e.g., "add a Blog link to the nav") - Check the site navigation in preview — the new link should appear - Ask the assistant to rename a nav item and confirm the change is reflected - Ask it to remove a nav item and confirm it's gone **Watch for:** Navigation changes still silently failing (no change in the site nav after the AI responds positively). Duplicate navigation items being added.
A regression in the AI site generation pipeline was causing the generated copy to sound formal, stilted, and overly technical — instead of conversational and brand-appropriate. Copy quality guardrails have been restored and strengthened, so newly generated sites will have more natural, human-sounding text from the start. **Where:** Generated site → All text content (headlines, descriptions, CTAs) **How to test:** - Generate a new site for a service business (e.g., plumber, accountant, restaurant) - Read the hero headline and section descriptions - Confirm the copy sounds natural and conversational, not like AI boilerplate ("Elevate your business to new heights with our cutting-edge solutions") - Compare with a site generated before this fix — the new version should sound noticeably more human **Watch for:** Copy that still sounds robotic or overly formal. Sections that are missing copy entirely.
When an announcement bar was added to a site with a fixed (sticky) navigation header, the bar was overlapping the header instead of sitting above it. The layout now correctly pushes the header down so both elements are visible and stacked in the right order. **Where:** Published site / preview → Sites with both an announcement bar and a sticky navigation **How to test:** - Add an announcement bar to a site that has a fixed/sticky navigation header via the "+" toolbar - Preview the site and scroll down - Confirm the announcement bar sits above the navigation, and the navigation sticks correctly below it with no overlap **Watch for:** The announcement bar disappearing behind the nav on scroll. The nav jumping position when the announcement bar is toggled.
A previous fix made the sticky navigation header sit below the announcement bar, but the rest of the page content was still hidden behind the bar. The announcement bar now shifts the entire page down so nothing is obscured, and dismissing the bar restores the original layout cleanly. **Where:** Published site or preview → Sites with an announcement bar enabled **How to test:** - Add an announcement bar to a site via the "+" toolbar - Preview the site and check that the hero section and all content below it is fully visible (not hidden behind the bar) - Scroll down and confirm sticky navigation also sits correctly below the bar - Dismiss the announcement bar and confirm the page layout snaps back to its original position **Watch for:** Page content partially hidden behind the announcement bar on initial load. Layout jumping when the bar is dismissed.
The AI assistant now prioritizes asking about your business location in the very first follow-up question, rather than getting to it later in the conversation. This ensures location-relevant content (local imagery, geo-specific copy) is captured early for better site personalization. **Where:** Client portal → New site → Blueprint chat (first AI follow-up question) **How to test:** - Start a new site and type your business name in the blueprint chat - Check that the AI's first follow-up question asks for your city or service area - Complete the conversation and generate — confirm the site reflects your location **Watch for:** The AI still asking about location late in the conversation (regression). The AI asking about location twice.
The site plan in blueprint chat now includes an Interactive Features panel below the section list. Active features (booking, shopping cart, WhatsApp chat, help center, etc.) appear as chips you can remove. A new "Add feature" button opens a picker of all available interactive features so you can add one directly from the plan without leaving the chat. **Where:** Client portal → New site → Blueprint chat → Site plan widget → Interactive Features panel **How to test:** - Start a new site via blueprint chat and describe a business that would need bookings or e-commerce (e.g., a salon or online shop) - Complete the planning conversation until a site plan appears in the chat - Scroll to the bottom of the plan widget and confirm an Interactive Features panel is visible - Confirm any detected features (e.g., "Booking Requests") appear as chips with an X to remove them - Click "+ Add feature", browse the available features, and select one — confirm it appears as a new chip - Click X on a chip and confirm the feature and its associated section are removed from the plan **Watch for:** The Interactive Features panel not appearing. Clicking X on a chip not removing the feature. The feature picker showing already-active features as options.
The blueprint planning conversation now maintains a requirements ledger — a running record of features and promises made during the conversation. The AI checks this ledger before responding so it stops over-promising capabilities the platform cannot deliver. For local businesses (coaching schools, salons, restaurants, etc.), the AI now asks for the city and service model (single location, service area, or online) before allowing site generation, so the generated site reflects the actual business geography instead of defaulting to US placeholders. **Where:** Client portal → New site → Blueprint chat **How to test:** - Start a new site for a local business (e.g., a sports coaching academy or salon) - Confirm the AI asks for your location and whether you serve a specific area or travel to clients — it should do this early in the conversation - Try to proceed to generation without answering — the AI should remind you and block generation until these are answered - After generating, confirm the site does not contain fake US phone numbers, placeholder addresses, or generic "San Francisco" city names **Watch for:** The AI skipping the location question for a clearly local business. Fake contact details (+1 555 numbers, 123 Main Street) appearing in the generated site. The AI promising features like parent portals or attendance tracking that the platform does not support.
Two data integrity issues in the blueprint chat plan have been fixed. Adding a new item to a section that already had structured items (with titles, descriptions, and icons) was creating a mix of plain text and structured entries that could cause display errors. Reordering sections was also silently modifying sections that were not moved. Both issues are now resolved so the plan remains consistent as you edit it. **Where:** Client portal → New site → Blueprint chat → Site plan widget → Section list **How to test:** - Complete the blueprint chat planning flow and open a site plan with sections that have items (e.g., a services section with individual service entries) - Click "+" to add a new item to that section and confirm the new item appears in the same structured format (with the same fields) as the existing items - Drag to reorder sections and confirm sections that were not moved still have their original items intact **Watch for:** Newly added items showing as plain text when existing items are structured with titles and descriptions. Sections losing their items after reordering other sections.
Sections in the blueprint chat plan list now display a badge when they include an interactive feature like Booking Requests, Shopping Cart, or WhatsApp. This makes it easy to see at a glance which parts of the planned site will have active functionality, not just static content. **Where:** Client portal → New site → Blueprint chat → Site plan widget → Section list **How to test:** - Start a new site via blueprint chat for a business that needs bookings or e-commerce - Complete the planning conversation until a site plan appears - Look at the section list in the plan widget — sections with interactive features should show a blue badge (e.g., "Booking Requests", "Shopping Cart") - Hover over the badge to see a description of the feature **Watch for:** Sections with features not showing any badge. The badge showing the wrong feature name for a section.
In some cases the blueprint chat AI would outline sections for the site plan but skip the step that fills in the detailed content for each section — resulting in a shallow plan with no items, copy, or design notes. The system now detects this situation automatically and runs the detailed planner, so the plan shown in chat always includes rich per-section guidance before it is used to generate the site. **Where:** Client portal → New site → Blueprint chat → Site plan widget **How to test:** - Start a new site via blueprint chat and describe a business with several service areas (e.g., a travel agency or sports coaching school) - Complete the planning conversation and wait for the site plan to appear - Confirm the plan sections show items, descriptions, and design guidance — not just bare section names - Repeat with different business types (salon, SaaS product) and confirm the same quality **Watch for:** Plan sections that appear with only a name and type but no items or copy. The "Generate site" button appearing before a full plan is displayed.
After reviewing a plan in the blueprint chat, the sidebar "Preview Plan" button was staying stuck and the Layout tab wasn't auto-switching to show the populated sections. Both issues are now fixed. Additionally, each plan section row in the chat can be expanded to show its content items, which can be renamed or deleted inline. **Where:** Client portal → New site → Blueprint chat → Preview Plan (sidebar) **How to test:** - Start a new site and go through the blueprint chat until the AI generates a plan - Click "Preview Plan" in the chat — the sidebar should immediately switch to the Layout tab showing the sections - Expand any section row in the inline plan list to see its items - Try renaming or deleting an item directly in the chat without leaving the chat view **Watch for:** Sidebar CTA remaining stuck on "Preview Plan" after a plan has been applied. Layout tab not switching automatically. Section items showing without labels.
Quick-reply chips (the suggestion buttons below the AI's message) were sometimes clickable while the AI pipeline was still running, which could cause duplicate or conflicting requests. They now stay disabled until the full pipeline completes. Voice responses from the AI are also shown as system notes in the chat feed for better context. **Where:** Client portal → New site → Design assistant chat **How to test:** - Start a new site and trigger an AI response that takes a few seconds - While the AI is still generating, check that the clarification chips below its message are grayed out and unclickable - Once generation finishes, confirm the chips become active **Watch for:** Chips remaining permanently disabled after generation completes. Chips becoming clickable mid-stream.
When the AI failed to generate suggestion chips (quick-reply options), the error message was misleadingly showing "rephrase" as a fallback action. Errors are now handled more gracefully with a JSON repair step that recovers partial responses, and the fallback message is accurate when recovery isn't possible. **Where:** Client portal → New site → Variation chat → AI suggestion chips below messages **How to test:** - Trigger a scenario where AI chips would normally fail (e.g., poor network, or edge case prompt) - Confirm that if chips fail, the error shown is clear and actionable — not "rephrase" when that doesn't apply - Confirm that partial chip responses are recovered correctly in most cases **Watch for:** Error message still showing "rephrase" when that's not the right action. Chips silently failing with no feedback to the user.
Cookie consent banners, exit-intent popups, and newsletter popups were showing near-invisible dark text on sites with dark color themes. All three overlay types now use the site's own theme text color so they remain readable regardless of whether the site uses a light or dark palette. **Where:** Published site or preview → Any site with a dark background → Cookie banner, exit popup, or newsletter popup **How to test:** - Open a dark-themed site in the editor and activate a cookie banner, exit popup, or newsletter popup via the "+" toolbar - Preview or publish the site and trigger each overlay - Confirm all text in the overlay is clearly readable against the background - Also test on a light-themed site to confirm those still look correct **Watch for:** Overlay text that is still hard to read (near-invisible). Overlay borders that do not match the site's theme palette.
The choice, rewrite, and clarification action buttons in the design assistant now show a clear processing/loading indicator while the AI is working, preventing accidental double-clicks and giving users feedback that their request was received. **Where:** Client portal → Site editor → Design assistant → Action buttons (choice chips, rewrite, clarify) **How to test:** - Open the design assistant and click a choice chip or clarification button - While the AI is responding, check that the button shows a spinner or disabled state - Confirm the button returns to normal once the response is complete **Watch for:** Buttons that remain in loading state permanently. Buttons that allow double-clicks despite showing a loading indicator.
When the AI assistant failed to plan a page, the progress indicator was showing a generic failed state with no explanation. The specific error reason is now shown inline so you can understand what went wrong and take corrective action. **Where:** Client portal → Site editor → AI assistant → Page planning progress **How to test:** - Trigger a page plan that fails (e.g., ask the assistant to create a page type that conflicts with an existing one) - Check the progress panel — the failed step should show a readable error message explaining why it failed **Watch for:** Failed steps showing no error detail (regression to generic failed state). Error messages that contain internal technical jargon instead of user-friendly text.
Switching hero patterns in the wireframe/layout view was triggering an infinite update loop that caused the UI to freeze or become unresponsive. The blueprint wizard and wireframe view are now properly synchronized without feeding back into each other. **Where:** Client portal → New site → Blueprint wizard → Layout tab → Hero pattern picker **How to test:** - Open the blueprint wizard Layout tab - Click through the different hero pattern options (Standard, Cinematic, Ken Burns, Particle) - Confirm the wireframe updates correctly with no freezing, console errors, or infinite re-renders - Switch back and forth between patterns several times to verify stability **Watch for:** UI freezing after selecting a pattern. The pattern picker not updating the wireframe at all (regression in the opposite direction).
After applying a cinematic hero, Ken Burns hero, or any other hero pattern via the design assistant, the suggested next step chips (e.g., "Adjust colors", "Change the video") were not appearing. The chips are now shown correctly after every hero pattern is applied, making it easy to continue refining the hero section. **Where:** Client portal → Site editor → Design assistant → Hero pattern tools **How to test:** - Open a site in the editor and open the design assistant - Apply a hero pattern (cinematic hero, Ken Burns hero, or particle background) - Confirm that after the pattern is applied, action chips appear below the response suggesting what to do next - Click one of the chips and confirm it works as expected **Watch for:** No chips appearing after applying a hero pattern. Chips appearing but not triggering the expected action when clicked.
Input fields in email capture forms and funnel opt-in widgets were invisible on sites with dark color themes — the text and border blended into the background. All affected form components now use theme-aware styling so inputs are clearly readable on both light and dark sites. **Where:** Published site → Any section with a funnel or opt-in form **How to test:** - Open a site with a dark background theme in the site editor - Navigate to a section with an email input or contact form - Confirm the input field border and placeholder text are visible against the dark background **Watch for:** Input fields that are still invisible (white on white or dark on dark). The fix affecting light-themed sites negatively (inputs should still look normal on light themes).
A "Generate" button now sits next to the Send button in the blueprint chat input bar, so you can kick off site generation directly from the chat without hunting for the button elsewhere. **Where:** Client portal → New site → Blueprint chat → Input bar (bottom of chat) **How to test:** - Start a new site via the blueprint chat - Look at the bottom input bar — a "Generate" button should appear alongside the Send button - Click it to confirm it starts the site generation flow **Watch for:** The Generate button appearing when it shouldn't (e.g., before enough info has been collected). The button not triggering generation (still loops to chat).
When the AI finished gathering information and signaled it was ready to generate the site, clicking "Generate" was incorrectly sending the user back into the chat flow instead of starting the build. The button now correctly triggers site generation when the AI has marked the conversation as complete. **Where:** Client portal → New site → Variation chat → Generate button **How to test:** - Start a new site conversation, answer the AI's questions until it indicates readiness - When the "Generate" button appears, click it - Confirm it transitions to the site generation screen instead of looping back to a chat prompt **Watch for:** Generation starting prematurely (before the AI is done collecting info). The Generate button still looping back into chat after this fix.
The hero pattern switcher (Standard, Cinematic, Ken Burns, Particle) now transitions between patterns more cleanly, with better cleanup of the previous pattern's state and improved canvas rendering for the animated patterns. Edge cases when switching back and forth between patterns are also resolved. **Where:** Client portal → Site editor → Design assistant → "Switch to cinematic hero" / Blueprint wizard → Layout tab → Hero pattern **How to test:** - Apply a cinematic or Ken Burns hero to a site via the design assistant - Switch to a different hero pattern and back - Confirm the transition is clean, with no leftover DOM elements or animation artifacts from the previous pattern - Try switching between all 4 pattern types several times to check stability **Watch for:** Canvas flicker or ghost elements when switching patterns. Ken Burns or particle effects continuing to animate after switching away.
Long headlines and taglines in the hero section were occasionally overflowing outside their container on newly generated sites. The AI generation prompt now includes layout constraints that prevent this, and the image selection system better accounts for the business location when choosing relevant photos. **Where:** Generated site → Hero section **How to test:** - Generate a new site with a long business name or tagline - Check the hero section in preview — text should be fully contained within the design without clipping or overflow - Compare before/after by generating a site with a very long headline (30+ characters) **Watch for:** Hero text still overflowing on sites with very long names. Text being truncated too aggressively (too short).
A new "Particle Background" hero style is now available — a pure-canvas animated effect with floating, gently drifting particles that respond to mouse movement. It works without any external libraries, supports reduced-motion preferences, and uses your brand accent color to tint a portion of the particles for a cohesive look. **Where:** Client portal → Site editor → Design assistant → "Switch to particle background hero" / Blueprint wizard → Layout tab → Hero pattern → Particle **How to test:** - Open a site in the editor and ask the design assistant "switch to a particle background hero" - Confirm the hero section shows floating animated particles against the background - Move the mouse over the hero — particles should gently react to the cursor - Open browser reduced-motion settings (prefers-reduced-motion: reduce) and confirm the particles become static - Switch away and back to the pattern to verify clean transitions **Watch for:** External library errors in the console (the particle effect must run with no npm dependencies). Particles not matching the site's brand color. The hero text being obscured by the particle layer.
Pages added to a site after the initial design was generated could show a white background or incorrect text color — the browser default bleeding through instead of the site's theme. The theme system now applies the site's background and text colors at the document level automatically, so every page inherits the correct look without relying on per-page workarounds. Three layers of protection ensure this holds even for edge cases. **Where:** Client portal → Pages tab → Any newly generated inner page (About, Services, Pricing, etc.) **How to test:** - Open a site with a dark color theme - Add a new page (e.g., Pricing or About) via the Pages tab - Preview the new page and confirm the background and text colors match the rest of the site — no white flash or light background visible - Check all sections on the new page to confirm theme colors are consistent **Watch for:** Newly added pages showing a white or light background on a dark-themed site. Text appearing in the wrong color on new pages.
A new page generated for an existing site was sometimes producing a light-colored layout on a dark-themed site, or using generic placeholder copy instead of matching the established brand style. The page generator now explicitly receives a "match the existing theme exactly — do not invent a new one" directive before producing any content, so new pages reliably inherit the site's visual identity. **Where:** Client portal → Pages tab → Add new page **How to test:** - Open a site with a distinctive color theme (e.g., dark background with a bright accent) - Add a new inner page (e.g., Pricing) via the Pages tab - Confirm the generated page uses the same background color, accent color, and font as the rest of the site - Confirm the hero and section copy matches the site's tone rather than using generic agency copy **Watch for:** New pages that appear with a completely different color scheme from the rest of the site. Generic placeholder copy ("Elevate your business") on a page that should match a specific brand.
The page planning flow has been consolidated into a unified plan card that shows per-section guidance from the AI. Each section can be expanded to view and edit its purpose and any specific copy instructions. The AI now also detects when a proposed page slug already exists and surfaces a clear choice (refine the existing page, replace it, or use a different slug) instead of silently proceeding. Boilerplate pages like Privacy Policy and Terms of Service now skip the plan step and generate immediately. **Where:** Client portal → Pages tab → Add page → Plan card **How to test:** - Open the page planner and ask to create a page with a slug that already exists (e.g., ask for a new "/services" when one already exists) - Confirm the AI responds with clear options presented as chips: refine, replace, or use a different slug - Ask to create a Privacy Policy or Terms of Service page and confirm it generates immediately without showing a plan card - For any other page type, confirm the plan card shows per-section purpose and optional copy hints in expandable rows **Watch for:** The AI silently creating a page at a colliding slug without asking. Boilerplate pages showing an unnecessary plan step. Per-section purpose fields being empty when the AI should have populated them.
Three UX issues in the page planner have been fixed. The AI was filling "verbatim copy" fields instead of the "purpose" field for most sections, meaning the strategic guidance was going to the wrong place. The advanced options accordion now starts collapsed and shows a summary pill when the AI has populated strategic fields. Starter suggestion chips now appear whenever the planner is open, even when resuming a previous conversation, instead of only appearing on the very first visit. **Where:** Client portal → Pages tab → Page planner chat **How to test:** - Open the page planner for a new page and let the AI propose a plan - Expand a section row and confirm the "Purpose" field has a description (not empty) and "Verbatim copy" is only set when exact text was quoted - Confirm the Advanced section is collapsed by default and shows a count pill like "3 populated" when the AI added strategic guidance - Close the planner, re-open it with the same conversation, and confirm the starter chips are still visible **Watch for:** Purpose fields that are empty while verbatim copy is populated for every section. The advanced accordion being open by default. Starter chips disappearing when re-opening a planner with an existing conversation.
When planning a new page in the assistant chat, you can now type "@" and select any existing page on the site to use as a style or structure reference. The AI picks up the reference and uses that page as a guide when generating the new one — useful for keeping consistent layouts across similar pages (e.g., "make Services look like @Pricing"). **Where:** Client portal → Pages tab → Chat assistant input field **How to test:** - Open a site that has at least two pages - Open the page planner chat for a new page - Type "@" in the chat input and confirm a dropdown appears with a "Pages on this site" section listing existing pages - Select a page reference and describe how to use it (e.g., "make the layout similar to @Services") - Confirm the generated page plan references the selected page and the final output reflects its structure **Watch for:** The "@" dropdown not showing the Pages section. Selecting a page reference not affecting the generated plan. Keyboard navigation (arrow keys, Enter) not working in the page section of the dropdown.
The page planner assistant now consistently routes all "add a page" requests through the plan card for confirmation before generating, except for legally required boilerplate pages (Privacy Policy, Terms of Service, Cookie Policy) which generate immediately without a plan step. When a proposed page slug matches one that already exists, the AI now responds with clear chip options rather than prose — making it one click to refine the existing page, replace it, or choose a different slug. **Where:** Client portal → Pages tab → Chat assistant **How to test:** - Ask the assistant to add a "Privacy Policy" page — confirm it generates without showing a plan card first - Ask to add a page whose slug already exists (e.g., "/services" when one exists) — confirm you see chip buttons for Refine, Replace, or Different slug rather than a prose paragraph - Ask to add any other new page — confirm the plan card appears for confirmation before generation begins **Watch for:** Boilerplate pages showing an unnecessary plan card. Slug collision responses appearing as plain text instead of clickable chips. Non-boilerplate pages bypassing the plan card and generating immediately.
Two interaction issues in the page planner have been fixed. Starter suggestion chips (quick-start prompts for common page types) were not appearing when the planner was opened with an existing conversation, even though the planner was otherwise ready for input. The @-mention dropdown for referencing other pages was also not opening in some configurations where only page mentions were available. Both now work consistently regardless of conversation state. **Where:** Client portal → Pages tab → Page planner chat input **How to test:** - Open the page planner with an existing site that has a previous conversation history - Confirm starter chips appear in the input area even though it is not a new conversation - Type "@" in the chat input and confirm the dropdown opens and shows the "Pages on this site" section - Select a page and confirm it is inserted as a mention in the input **Watch for:** Starter chips not appearing when re-opening a planner that had a previous conversation. Typing "@" not opening the mention dropdown. The dropdown opening but not showing any pages.
After asking the AI to add a new section to the site, the preview now automatically scrolls to the newly added section so you can immediately see and review what was created, instead of having to manually scroll to find it. **Where:** Client portal → Site editor → Design assistant → "Add a [section type] section" **How to test:** - Open a site in the editor and ask the design assistant to add a new section (e.g., "add a testimonials section") - Once the AI finishes, the preview should automatically scroll to the new section - Confirm the new section is visible without manual scrolling **Watch for:** The page scrolling to the wrong section. The page not scrolling at all (regression to old behavior).
When regenerating a site to get a fresh design, the previous variation's files were not being fully replaced, causing a mix of old and new content to appear in the regenerated site. The regeneration flow now correctly swaps all page files and snapshots the outgoing variation before replacing it. **Where:** Client portal → Site editor → Regenerate site option **How to test:** - Open an existing site and trigger a regeneration - After generation completes, check that all pages reflect the new design with no leftover content from the old design - Confirm the old design is still accessible via the variation history/switcher **Watch for:** Old content appearing mixed with new content on regenerated sites. The variation history losing the previous design after regeneration.
The @mention badge UI in the design assistant chat input was removed to reduce visual noise and confusion. Users were clicking the badges expecting something to happen, but they were decorative-only. **Where:** Client portal → Site editor → Design assistant → Chat input bar **How to test:** - Open the design assistant and check the chat input field - Confirm there are no @mention or context-tag badges cluttering the input area **Watch for:** @mention badges still appearing in the input field.
Features added via the "Add to site" panel (announcement bars, chat widgets, etc.) were not showing in the shareable public preview link. The preview now includes all active add-ons so stakeholders see the same experience as the live editor. **Where:** Client portal → Site editor → Preview → Share preview link **How to test:** - Add an announcement bar or another add-on to a site via the "+" toolbar button - Copy the public preview link and open it in a new browser tab (or incognito) - Confirm the add-on appears in the preview the same way it appears in the editor **Watch for:** Add-ons showing in the editor but not in the shared preview. Add-ons appearing in the preview but not in the editor (regression).
The voice assistant will no longer trigger site generation just because the user "sounds ready" or has finished answering questions. Generation now requires an explicit go-ahead phrase from the user (yes / generate / build it / let's go / go ahead). **Where:** Client portal → New site → Voice mode (the microphone in the blueprint wizard) **How to test:** - Start a new site, click the microphone, dictate a few details (business name, industry, description, sections) - Stop short of saying any go-ahead phrase — keep answering questions but never say "generate", "build it", "yes", "let's go", or similar - Confirm the assistant ASKS first ("Ready for me to generate the site now?") and waits for an explicit yes - Try saying things like "I think that's everything" or "I'm done" — the assistant should still ask for explicit confirmation, not auto-trigger - Once you say "yes generate" or "let's build it", confirm generation starts and the wizard transitions to the build screen - Edge: try ending the voice session before confirmation — generation should NOT have started **Watch for:** Voice firing generation when the user said something ambiguous (e.g., "I'm ready to take a break" should NOT trigger). Voice asking for confirmation more than once in a row (annoying loop). The assistant cutting off mid-sentence when it transitions to the build step (related issue, mitigated by transcript-persistence fix shipped today).
You can now use your voice to direct changes to your site in the variation (refinement) chat — the same rich voice experience previously only available in the blueprint wizard. Say things like "add a testimonials section" or "change the color scheme to something darker" and the AI will update the site based on your spoken instructions. **Where:** Client portal → Site editor → Variation chat → Microphone button **How to test:** - Open a site in the editor and click the microphone icon in the variation chat - Speak a change request (e.g., "make the hero section more minimalist" or "add a FAQ section") - Confirm the AI processes your voice request and applies the change to the site - Try the voice minutes limit: if you've exhausted your monthly voice quota, confirm a clear error message appears **Watch for:** Voice mode falling back to basic dictation instead of the full conversational AI. The microphone button missing from the variation chat input bar. Voice transcripts not appearing in the chat feed.
When using voice mode in the design assistant, the AI's suggestions and responses are now shown as messages in the chat feed so users can see what the assistant is saying even with audio off or after the conversation. **Where:** Client portal → New site → Design assistant → Voice mode (microphone icon) **How to test:** - Open the design assistant and start voice mode - Speak a request and listen for the AI response - Check the chat feed — the AI's voice response should now appear as a system note in the conversation **Watch for:** Voice suggestions appearing twice (once in feed, once as audio). Chat feed not updating in real time during voice mode.
The "Add new section" quick action previously sent a blind instruction to the AI with no guidance on what to add or where. It now opens a form where you pick the section type (Testimonials, FAQ, Pricing, Team, and 6 others) and where to place it (bottom of page, after hero, before footer). The action also appears in the chat panel so you can see the result and undo it if needed. **Where:** Client portal → Site editor → click any page area → Quick Actions → Add new section **How to test:** - Click on the page, open Quick Actions, and select "Add new section" - Confirm a form opens with "Section type" and "Where to add it" dropdowns - Select a type (e.g. "Testimonials / Reviews") and placement, then click Apply - Confirm the new section appears at the chosen position and matches the site style - Confirm the chat panel shows the action with an Undo button **Watch for:** Form not opening (bare AI prompt fires instead); section added at wrong position; chat panel not showing the action; Undo button missing or non-functional
Applying an add-on (announcement bar, WhatsApp button, cookie banner, etc.) or removing one via the element menu was completely silent — no entry appeared in the design assistant chat and there was no undo record. Both actions now open the assistant panel, show a confirmation message, and record an activity entry so the session history is complete. **Where:** Client portal → Site editor → Quick Actions (+Add) → apply any add-on; or right-click an add-on element → Remove **How to test:** - Add a WhatsApp button via +Add → the design assistant chat should open and show a confirmation message - Remove the WhatsApp button via the element context menu → another message should appear in the chat - Check the activity/history panel to confirm both actions are recorded **Watch for:** Chat panel not opening after applying an add-on; duplicate messages; the activity entry missing or showing the wrong add-on name
The "Change page background" quick action used to fire blindly with a vague directive, so the AI had no concrete target and frequently returned no visible changes. It now opens a short form first — choose from six style directions (more premium, lighter/airier, warmer, cooler, dark mode, bold accent) and then applies exactly that change. **Where:** Client portal → Site editor → click any section → Quick Actions → Change page background **How to test:** - Click on any page section, open Quick Actions, and select "Change page background" - Confirm a form opens with a "Background direction" dropdown and six options - Pick an option (e.g. "Dark mode") and click Apply - Confirm the background visibly changes to match the chosen direction **Watch for:** Apply button staying disabled; background changing to an unexpected colour unrelated to the selection; no visible change after applying
When opening the add-on form for announcement bars, WhatsApp buttons, cookie banners, and 14 other site features, the Apply button was permanently greyed out on the first open — required dropdown fields started empty so the form was never considered valid. The first option in each dropdown is now pre-selected automatically so the form is ready to submit immediately. **Where:** Client portal → Site editor → Quick Actions (+Add) → any add-on with a dropdown field (announcement bar, WhatsApp bubble, cookie consent, etc.) **How to test:** - Click +Add and open any add-on form (e.g. Announcement Bar or WhatsApp Button) - Confirm the Apply button is enabled on first open without selecting anything - Change dropdown values and confirm Apply stays enabled - Submit the form and confirm the add-on is applied to the site **Watch for:** Apply button still disabled; the pre-selected default value causing unexpected add-on behaviour (e.g. wrong colour, wrong position)
When opening add-on forms that contain required text fields (announcement bar message, cookie banner text, Calendly URL, countdown end date, exit popup headline), the Apply button stayed permanently greyed out even though dropdown fields were pre-filled correctly. Required text fields now start with their placeholder value as a sensible default, enabling Apply immediately. The value can still be edited or cleared before submitting. **Where:** Client portal → Site editor → +Add → any add-on with a required text field (Announcement Bar, Cookie Banner, Calendly Float, Countdown Timer, Exit Popup) **How to test:** - Open +Add and select Announcement Bar - Confirm the Apply button is enabled immediately without typing anything - Check that the text field shows a pre-filled default message (e.g. "🎉 20% off all services this week") - Clear the field and confirm Apply becomes disabled; type new text and confirm it re-enables - Submit and confirm the add-on is applied with the chosen text **Watch for:** Apply button still disabled on open; pre-filled text appearing on the live site instead of user-entered text; other add-on forms still showing a disabled Apply
A background content-sync process was quietly overwriting user-edited site content on every page load — even when there was nothing to migrate — and the page version history was showing site-wide events (like deleted unrelated pages) mixed in with a single page's edits. Both issues are now fixed: the sync only writes when it has real work to do and uses a server-side fingerprint to skip re-runs, and each page's version timeline shows only that page's own history. **Where:** Client portal → Site editor → Pages tab → page version timeline (history panel); also affects all content editing done via the design assistant **How to test:** - Open a page's version timeline and confirm it shows only events for that page, with no "Deleted page X.tsx" entries from unrelated pages - Edit some content, save, then reload — the content should stay as edited and not revert or shift to different field names - Open the same site in a second browser session; the content sync should not re-fire and overwrite the first session's edits **Watch for:** Blueprint content keys renaming themselves after a page reload; version history for a page showing entries from other pages; the same site generating a new version entry on every visit with no actual changes
Opening the site editor crashed immediately on every page load after the add-on undo feature was introduced. A React hook referenced a function before it was declared in the component, causing a JavaScript error that prevented the editor from mounting at all. The reference is now forwarded correctly so the editor loads without issue. **Where:** Client portal → Site editor (any site) **How to test:** - Open any site in the client editor - Confirm the editor loads without a blank screen or console error - Add a site feature via +Add, then use the Undo button to reverse it — confirm undo still works **Watch for:** Blank editor on load; "Cannot access before initialization" error in the browser console; Undo button on add-on changes failing after the fix
Sites can now use a Ken Burns hero: a full-screen image that slowly zooms and pans across 3 chapters as the visitor scrolls, fading between each scene with adjustable brightness — giving photography, portfolio, and hospitality sites a cinematic opening without a video file. **Where:** Client portal → Blueprint builder → wireframe layout picker → "Hero patterns" row → Ken Burns Image Hero; or ask the AI assistant "add a Ken Burns hero" in the design chat **How to test:** - Open a site in the Blueprint builder and click a hero section in the wireframe - In the layout/pattern picker, select "Ken Burns Image Hero" — the modal should prompt for a hero image upload - Upload a landscape image and generate the site; the hero should open with a slow zoom-pan-brightness effect - Scroll through the page to confirm the Ken Burns animation progresses through 3 chapters before releasing - Switch back to a standard layout — the Ken Burns asset slot should be preserved and not re-prompt **Watch for:** Ken Burns and cinematic-video heroes both mounting simultaneously (two full-screen sections stacked); hero image prompt not appearing; scroll paging broken (two ScrollTrigger pins colliding); animation not running on mobile
Switching a site from one hero animation pattern to the other (cinematic video ↔ Ken Burns image) previously left both hero sections mounted simultaneously, corrupting scroll pacing and stacking two full-screen panels. The old pattern's block and its content metadata are now fully removed before the new one is applied. **Where:** Client portal → Blueprint builder → wireframe layout picker → Hero patterns row; or design assistant chat "switch to cinematic hero" / "switch to Ken Burns hero" **How to test:** - Set a site to Ken Burns hero, generate, and confirm it works - Switch to cinematic-scrub-video hero and regenerate — only one hero section should render - Switch back to Ken Burns — again, only one hero section, clean scroll behaviour - Verify no leftover `kenBurnsHero` or `scrubHero` content remains after each switch **Watch for:** Two hero sections visible at the same time; scroll jumping or stuck at the hero; lingering video or image assets from the prior pattern appearing in the new site
Adding, updating, or removing site features (announcement bars, WhatsApp buttons, cookie banners, etc.) through the design assistant chat had no undo support — the Undo button was missing entirely. These actions now record the previous state so clicking Undo reverses the operation: a newly placed add-on is removed, an updated one reverts to its prior config, and a removed one is restored. **Where:** Client portal → Site editor → Design Assistant (chat) → any +Add or remove add-on action **How to test:** - In the design assistant, add an Announcement Bar or WhatsApp button via the +Add panel - Confirm the chat activity shows an Undo button next to the action - Click Undo and confirm the add-on is removed - Try updating an existing add-on, then Undo — confirm it reverts to the previous settings **Watch for:** Undo button missing on add-on activities; undo succeeding but the add-on not actually reversing; undo crashing with a toast error
You can now attach MP4, MOV, or WebM video files directly from the in-editor assistant bar (the refine chat panel) when building a scroll-scrub cinematic hero. If generation is attempted without a required video, a prompt automatically appears so you can upload and retry without losing your place. **Where:** Client portal → site editor → assistant bar (bottom chat panel) → paperclip / attach button → select a video file **How to test:** - Open a site in the editor and open the assistant bar. - Click the attach button — video files (MP4/MOV/WebM) should appear as a valid option alongside images. - Attach a video and confirm a muted preview chip appears with a remove button. - Send a message; the video should upload (transcoding takes 20–40 s) and the AI should receive it. - Alternatively, start generation with a cinematic blueprint that requires a video but none attached — a modal should prompt you to upload, then automatically retry generation on success. **Watch for:** - Video chip showing an error instead of a preview thumbnail - Modal not appearing when generation requires a video upload - Generation not retrying automatically after successful upload in the modal
The site plan is now shown as a compact, editable section list inside the chat (drag, rename, delete, add) rather than a full wireframe that repeated the right-rail panel. The "Preview Plan / Generate Website" button moves to a fixed position anchored to the brief panel on desktop and the bottom of the screen on mobile — it's always visible and advances through each step without competing with the conversation. **Where:** New site builder → chat area (inline plan list) + sidebar footer / mobile bottom bar (CTA button) **How to test:** - Start a new site brief and let the assistant generate a section plan. - The chat should show a compact list of sections with drag handles, rename-on-click, a delete icon per row, and an "Add section" button at the bottom of the list. - Renaming a section in the inline list should be reflected in the right-rail Layout tab's wireframe view, and vice versa. - On desktop, a purple→pink "Preview Plan" button should appear anchored to the bottom of the Brief/Layout panel — it should not be inside the chat transcript. - On mobile, a fixed-bottom CTA should appear. Once a plan exists, the label should read "Review & Generate" (not "Generate Website"). - After previewing the plan, the button label should change to "Generate Website". **Watch for:** - Renaming in the inline list and then immediately renaming via the wireframe producing conflicting results (should stay in sync via shared React state) - The sidebar CTA button missing on first load (should appear as soon as a plan is created) - Mobile CTA label showing "Generate Website" before the review step has been completed
You can now reference sections from other sites when chatting with the Design Assistant — type `@` in the chat input to open a section browser that shows variations and sections across your other sites. Pick one and the assistant will use that design as a reference when making its change, making it easy to say "make our hero look like this one". **Where:** Client portal → Site editor → Design Assistant chat input → type `@` **How to test:** - Open a site in the editor and focus the Design Assistant chat input - Type `@` — a dropdown should appear; a right-side panel should also open showing a browsable list of sections/variations from your other sites - Pick a section from a different site — it should be inserted into the chat as a mention reference - Send a message referencing the mention (e.g. "make our hero look like @[ref]") - Confirm the assistant acts on the reference and the activity feed logs which design was referenced - Verify the dropdown styling is readable in light mode (grey background, not white-on-white) **Watch for:** Section browser panel failing to open when `@` is typed; mention inserted but losing the design reference after sending; dropdown only showing sections from the current site instead of cross-site references; dropdown text unreadable in light mode
Once a cinematic scroll-scrub hero was selected via the AI classifier, there was no way to undo it — the layout picker was locked and users had no route back to a standard hero without editing raw data. A "Switch to standard" button now appears on the hero card whenever cinematic mode is active, clearing the selection and restoring the normal layout picker. **Where:** New site builder → right-rail Layout tab → Hero section card (when cinematic mode is active) **How to test:** - Trigger cinematic hero intent in the chat (e.g. "I want a scroll-scrub video hero like Apple"). - Confirm the hero card shows "Cinematic Scroll-Scrub (locked)" with no layout picker. - Click "Switch to standard" — the card should revert to the normal layout picker, and the cinematic lock should clear. - Confirm the compact section-plan list in the chat transcript also reverts the hero icon to the standard layout. - Try a short confirmation like "yes, go ahead with that" after the AI describes the cinematic option — it should still set cinematic mode (classifier context fix). **Watch for:** - "Switch to standard" button not appearing when cinematic mode is active - Clicking "Switch to standard" but the wireframe still showing the cinematic layout - Short replies ("yes", "sure") after a cinematic description not triggering cinematic mode