Regenerating a site would fail entirely if the AI provider couldn't fetch one of the site's reference images directly from its URL (e.g., a throttled request or a URL the provider couldn't reach). The regeneration pipeline now automatically retrieves the image itself and passes it to the AI instead of giving up. **Where:** Client portal → Site editor → Regenerate **How to test:** - Open a site that has images and trigger a regeneration - Confirm regeneration completes and the result includes the expected imagery **Watch for:** Regeneration ending with an image-fetch error or producing a result that's missing images compared to the original.
The AI assistant's Undo command was reading a stale version number and could jump back to a snapshot from days ago, reverting changes far beyond the last refinement. It now fetches the latest version from history immediately before each refinement so Undo always lands on the correct pre-change state. **Where:** Site editor → Design Assistant → make a refinement → Undo **How to test:** 1. Open a site with several saved versions. Make a refinement via the assistant (e.g. change a color). 2. Click Undo — only the refinement should revert; earlier work stays intact. 3. Repeat for a second refinement to confirm each Undo step is independent. **Watch for:** Undo reverting more than the last change, or reverting to a state from a previous session — both indicate the pre-refine anchor was not captured correctly.
Speaking a single change request in voice mode now triggers exactly one refinement instead of several racing ones. **Where:** Site editor → Design Assistant → Voice mode **How to test:** Start voice mode, ask for a visual change (e.g. "fix the announcement bar so it sits above the navigation"), and wait. Only one user message and one refinement should appear. **Watch for:** Duplicate `🎙️` chat bubbles, multiple "Refining your site…" runs for one spoken request, or conflicting edits from overlapping refinements.
When a voice request needs an AI design change, the assistant now says upfront that it's working on it and will take 20-30 seconds — so you're not left with unexplained silence. **Where:** Site editor → Design Assistant → Voice mode **How to test:** Start voice mode and ask for a complex change (e.g. "add a pricing section"). The assistant should give a spoken heads-up before processing, then confirm when done. **Watch for:** The assistant calling a slow tool silently, or starting a second slow change before the first finishes.
When asking the Design Assistant to update navigation links, it now only inserts links to pages that actually exist on your site — previously it could invent slugs like "/luxury-weddings" that led to a "Page not found" error. **Where:** Site editor → Design Assistant → any request to update or expand navigation **How to test:** - Open a site with a known set of pages - Ask the Design Assistant: "Link nav to all pages created" - Confirm every nav link points to an existing page; no invented or broken links appear **Watch for:** Nav links that go to a "Page not found" screen, or links with slugs that don't match any page in the site's Pages list.
When asking the Design Assistant to update navigation, it now only links to pages that actually exist on the site — invented slugs like "/luxury-weddings" or "/corporate-excellence" that were never generated no longer appear in the nav, eliminating "Page not found" errors in the editor. **Where:** Site editor → Design Assistant → any request mentioning navigation or links (e.g. "link the nav to all pages", "update the menu"). **How to test:** On a site with a known set of pages, ask "link the nav to all pages created". The resulting navigation should contain only hrefs that match the site's real pages — no invented or guessed slugs. **Watch for:** A nav item that points to a slug not present in the Pages tab; an existing nav item with a valid slug being removed; the AI responding that it cannot list pages.
Requesting that the Design Assistant link the navigation to other pages (e.g. "link nav to all pages") now correctly updates the header links — previously the AI reported "Applied" but the navigation was unchanged. **Where:** Site editor → Design Assistant → any request to update or relink navigation items **How to test:** - Open a site with multiple pages in the editor - Ask the Design Assistant: "Link the nav to all my pages" - Confirm the header navigation updates with working links to each page **Watch for:** The AI saying "Applied" but nav items not changing; nav links pointing to `#` instead of real page URLs.
Applying a Brainstorm suggestion to a section that lives in its own file (such as a Hero or Pricing component) previously replaced the entire page with just that component's code, wiping all other sections. The fix ensures only the targeted component file is updated. **Where:** Site editor → Design Assistant → Brainstorm → Apply on any standalone section component **How to test:** - Select a hero or pricing section in Brainstorm and apply a suggestion - Confirm the rest of the page (other sections, layout) is unchanged after Apply **Watch for:** All sections except the edited one disappearing after Apply; the page showing only one component after a Brainstorm edit.
Asking Brainstorm to remove or replace a section (e.g., "remove this pricing block and add a 'contact for a quote' message") previously ended with a "Text replacement failed" error. It now routes these structural requests through the full Design Assistant instead of dead-ending. **Where:** Site editor → Design Assistant → Brainstorm → structural change request (remove section, replace section) **How to test:** - Select a section in Brainstorm and request a structural change such as "remove this section" - Confirm the change is applied via the Design Assistant rather than showing a failure toast **Watch for:** "Text replacement failed. Try a simpler phrase" appearing on remove/replace requests; the section remaining unchanged after Apply.
After clicking Apply in the Brainstorm suggestions panel, the panel now closes and returns focus to the site preview — it previously stayed open and blocked the view. **Where:** Site editor → Design Assistant → Brainstorm → Apply any suggestion **How to test:** - Open Brainstorm, pick any suggestion (text, color, image, etc.), and click Apply - Confirm the panel closes and the updated preview is visible immediately **Watch for:** Panel staying open after Apply; needing to manually close it.
The "Collection · N items" label in the preview page picker now updates immediately after you add or delete a collection item — previously the count was fetched once on page load and stayed stale for the rest of the session. **Where:** Site editor → preview toolbar → page dropdown → any collection entry **How to test:** - Open a site with a collection in the preview - Note the item count shown in the dropdown - Add or remove a collection item via the in-preview editor - Reopen the dropdown and confirm the count reflects the change **Watch for:** Count showing the old number after an add/delete; needing a full page refresh to see the correct count.
When the Design Assistant makes a change that appears correct but doesn't actually fix the reported issue (e.g., tweaking a CSS class that wasn't causing the problem), it now detects this and returns honest feedback with 2–3 alternative ways to phrase the request — instead of falsely reporting "Applied." **Where:** Site editor → Design Assistant → any layout or spacing change request **How to test:** - Ask the Design Assistant to fix a spacing issue using a vague description - If the AI makes a change that doesn't visibly fix the issue, confirm it shows a "didn't quite work" message with rephrase suggestions instead of a green "Applied" - Click one of the suggested rephrases and confirm it attempts the fix again **Watch for:** A false green "Applied" appearing when the preview visually unchanged; rephrase chips not appearing when the fix clearly didn't work.
Saving blueprint content updates (like changing your business name in the site editor) previously overwrote whatever name you had given the client in the dashboard — replacing it with the site's business name even months after signup. The sync now only runs when the client is still using a default placeholder name. **Where:** Client dashboard → client name; Site editor → business info **How to test:** - Set a custom name for a client in the dashboard (e.g., "ACME Corp") - Open the client's site and save a business name change - Return to the dashboard and confirm the client name is still "ACME Corp" **Watch for:** The client name reverting to the site's business name after any content save.
When both design variations failed to produce renderable files, the site was left at "Completed" status — but opening the editor would immediately crash because there were no files to render. The status is now correctly downgraded to "Failed" so users see a clear error and can retry. **Where:** Site editor → generation flow → status indicator **How to test:** - If a generation fails mid-way, confirm the status shows "Failed" rather than "Completed" - The editor should show a retry option instead of crashing **Watch for:** A site marked "Completed" where the editor fails to open; a spinning "generating" indicator that never clears after a generation error
A new "Manage all items →" action in the collection row picker opens the matching collection in Mission Control's content library without leaving the editor flow. **Where:** Site editor → preview → collection row picker chip → "Manage all items →" link **How to test:** - Open a site with a collection and select a row in the preview - Click the "Manage all items →" link in the row picker chip - Confirm Mission Control opens with the correct collection pre-selected **Watch for:** The link missing from the chip; Mission Control opening to the wrong collection; navigation failing silently.
When building a multi-page site through the Site Planner, the new pages are now automatically wired into the site's navigation menu — previously they were generated but never linked from the header. **Where:** Site Planner → "Build my site" → site navigation (header links) **How to test:** - Plan a site with 4+ pages and start the full build - Once complete, open the site editor and inspect the header — all built pages should appear as navigation links - Click each nav link and confirm it navigates to the correct page **Watch for:** Nav links pointing to `#` anchors instead of real page slugs; a page that was built but missing from the header menu entirely.
Two bugs in the parallel page builder: a theme file backfill could overwrite a page that a sibling build had just saved (because each builder read a stale snapshot), and resume runs counted already-completed pages again — inflating the completion count and misreporting progress. Both are fixed: the theme backfill now runs inside an atomic write gate, and page counts are deduplicated across resume attempts. **Where:** Site Planner → "Build my site" **How to test:** - Build a site with 6+ pages; confirm all pages appear in the editor when the build completes - If a build was interrupted and resumed, confirm the progress count matches the actual pages created - Confirm the theme file appears alongside all pages (not just the first one) **Watch for:** Pages missing from the site after a multi-page build; the progress modal showing a higher count than the pages actually built; a page whose content is overwritten by the theme file
Collection entries in the preview page picker now show their real item count ("Products · 12 items") and the collection's actual plural label instead of a guessed slug. A new "Shared design" option also lets you preview the collection template without any individual item loaded. **Where:** Site editor → preview toolbar → page dropdown → any collection entry **How to test:** - Open a site that has a collection (products, events, rooms, etc.) - Open the page picker dropdown and look at the collection section - Confirm each collection shows its real item count and a human-readable label - Select "Shared design" and confirm the template renders in placeholder mode **Watch for:** A collection showing "0 items" even when items exist; the label showing a raw slug instead of a name; "Shared design" not rendering the template layout.
Renaming a site from the dashboard now correctly updates only the targeted site's name — previously it renamed the parent client, which propagated to every other site card associated with that client. **Where:** Dashboard → site card → rename action (pencil icon / context menu) **How to test:** - Create a client with two or more sites - Rename one site from the dashboard - Confirm only that site's card shows the new name; the other site cards are unchanged **Watch for:** All site cards under a client changing name simultaneously when only one was renamed.
After a full multi-page site build finished, the Mission Control preview panel could be left blank — requiring a hard browser refresh to see the result. The preview now loads automatically once the build completes. **Where:** Mission Control → homepage preview panel (shown after Site Planner build) **How to test:** - Start a full site build via the Site Planner - Once the progress modal closes, confirm the preview panel shows the homepage without requiring any refresh - Let the browser sit on the page through the entire build — preview should appear automatically **Watch for:** Preview panel staying blank or showing an error after build completion; preview only appearing after Ctrl+Shift+R.
When generating a site, near-identical collection names (e.g., "packages" and "weddingPackages", or "events" and "eventTypes") are now automatically merged into a single collection before saving — resulting in one complete collection instead of two half-filled ones. **Where:** Site generation → Collections in Mission Control **How to test:** - Generate a site in an industry that commonly uses multiple related catalog terms (weddings, events, real estate) - Open Mission Control → Content and confirm there is one unified collection rather than two near-duplicate ones **Watch for:** Duplicate collections with overlapping items; one collection appearing mostly empty while a similar-named one has all the content.
New pages don't auto-add to your site menu (you curate it). The AI "Suggest navigation" tool is now one click away from where you actually add pages, instead of being buried in Settings. **Where:** Site editor → Pages panel → the "+" menu → "Suggest navigation" **How to test:** - Add one or more pages, then open the "+" menu in the Pages panel - Click "Suggest navigation" — it opens Settings → Navigation and automatically runs the AI suggestion pass - Review the proposed header/footer placements and apply the ones you want **Watch for:** The suggestion should auto-run on arrival (no need to click "Suggest with AI" again); if every page is already in the menu it shows an "all pages already in navigation" message.
Using Undo after regenerating site images with AI now correctly targets just the image change — it previously skipped the regen snapshot and jumped back to a much earlier state, reverting hours of other edits. **Where:** Site editor → AI image regeneration → Undo **How to test:** - Run an AI image regeneration on a site - Make one additional edit after the regen - Press Undo and confirm only the last edit is reverted, not everything back to before the image regen **Watch for:** Undo after image regen reverting to a state from hours earlier; multiple Undos needed to recover from a single change.
When the AI updated only content (text, headings, or copy) without changing any code, the change was saved without creating a version history entry — so "Undo" showed "no previous version exists" and did nothing. A snapshot is now saved before every content-only refinement, so undo restores correctly. **Where:** Site editor → Chat tab → ask to change text or copy → Undo button **How to test:** - Ask the AI to update the hero headline or change some copy - Open version history (or use the Undo button) - Confirm you can revert to the previous text **Watch for:** "Cannot undo — no previous version exists" appearing after a successful content change; undo reverting to a much older version instead of the one just before the edit
After entering your real business name during setup or chat, the dashboard card now reflects that name immediately instead of staying stuck on the placeholder "Personal Projects" label. **Where:** Dashboard → site cards (name displayed under each site thumbnail) **How to test:** - Sign up and enter a business name in the onboarding chat; confirm the dashboard shows that business name, not "Personal Projects" - Open an existing site, update the business name via Design Assistant chat; confirm the dashboard card updates on next visit **Watch for:** Dashboard still showing "Personal Projects" after a business name is entered, or the site card name reverting to the old placeholder on page refresh.
The background page pre-fetch that extracts source content before a new page is added had a 20-second timeout — too tight for a real extraction that takes 30–60 seconds. The cache never warmed, so generated inner pages fell back to generic content instead of matching the cloned source. The prefetch now has a 90-second window and reliably warms the cache. **Where:** Site editor → Pages → Add page (for sites created via Clone from website) **How to test:** - On a cloned site, add a new inner page (e.g. About, Services) - The generated page should reflect content and style from the source site's corresponding page **Watch for:** Inner pages generating with generic placeholder content instead of source-matched content
The site editor AI assistant previously responded to requests like "undo that" or "show me previous versions" with prose explaining it had no undo button. It now immediately calls the correct tools to either undo the last change or display the full version history. **Where:** Site editor → AI assistant chat → ask to undo a change or view version history **How to test:** - Make a change via the AI assistant - Type "undo that" or "can I go back to the previous version?" - Confirm the assistant immediately undoes the change or shows version history rather than explaining it can't **Watch for:** The assistant saying "I don't have an undo button" or "I can't access previous versions"; the assistant suggesting manual workarounds instead of using its tools.
The AI chat panel could enter a permanent loading state if the response stream stalled mid-reply (network hiccup, tab reload) — with no way to retry without refreshing the page. A 45-second idle watchdog now detects stalled streams and shows a Retry button, and any chat history saved on the server is automatically restored so you don't lose context. **Where:** Site editor → AI Chat panel → any chat message **How to test:** - Send a message in the AI chat panel - Confirm the response arrives and the loading spinner clears - Simulate a stall by throttling the network mid-response; confirm a Retry button appears within ~45 seconds **Watch for:** Chat panel spinner that never clears; "Retry" button not appearing after a stall; chat history lost after network interruption
A silent failure in the smart file selection system caused every AI chat refinement to fall back to a minimal context — the AI was editing your site with far less information about your files than intended. Smart context is fully restored, so refinements are more accurate and the right files get updated. **Where:** Site editor → Chat tab → any refinement request **How to test:** - Open the chat tab on a multi-file site and ask for a style change - Confirm the AI correctly identifies and updates the right file (not just the homepage) - Try a theme or section-specific request and verify the correct block file is changed **Watch for:** Refinements reverting to editing the homepage when they should edit a specific page or component; "Smart context failed — using minimal fallback" in server logs
After extracting content from a pasted URL, the AI now opens with a brief summary of what it learned from your site before handing off to the redesign intake — confirming industry, tone, and key sections so you can spot and correct any misreads before generation starts. **Where:** Site setup chat → paste a URL → after extraction completes **How to test:** - Paste your own website URL and complete the clone intent selection - After extraction, confirm the AI leads with a short summary of what it understood - Verify the intake that follows is pre-populated with the correct layout notes **Watch for:** Summary being excessively long or re-asking questions the extraction already answered; intake showing blank style/animation notes
Each time a new page was added to a cloned site, the shared image pool was silently eroding — images stored under `r2_url` (our CDN) were being filtered out, and when all incoming images were duplicates the pool got overwritten with an empty filtered list. Images from the source site's inner pages were also not available to the generator on cache hits. All three cases are now fixed. **Where:** Site editor → Pages → Add page (for sites created via Clone from website) **How to test:** - Clone a site, then add several inner pages - Verify later pages still use images consistent with the cloned source rather than switching to generic stock photos **Watch for:** Later-added pages reverting to generic images while earlier pages kept the cloned imagery
Two bugs in the site-clone wizard: the assistant was sending the initial clone request with a stale blueprint that was missing key cloning instructions, causing the extraction step to silently skip; and after the user completed the redesign intake, the wizard would re-show the intake form on subsequent turns. Both are now fixed. **Where:** Site creation → Clone from existing website → chat-based wizard flow **How to test:** - Start a clone, complete the redesign preferences intake - Continue chatting — the intake card should not reappear - Verify the clone proceeds through extraction and generation without stalling **Watch for:** Redesign intake form appearing multiple times, or clone getting stuck in a loop without extracting content
When cloning a site, the AI planner was overwriting real scraped content (phone numbers, email addresses, physical address, footer links) with generic layout prose. Contact details and other factual content from the source site are now preserved through the entire generation pipeline. **Where:** Site creation → Clone from existing website → generated result **How to test:** - Clone a site that has contact details (phone, email, address) on the source site - After generation, verify the contact section retains the scraped phone/email/address rather than placeholder text **Watch for:** Contact section showing generic "your phone number here" placeholders instead of the cloned business's real contact info
Sites with complex menus (dropdown triggers, mega-menus) often have navigation items with no single URL, causing the AI nav capture to return an empty navigation list. The cloned site then had no navigation at all. Now, when AI capture produces no navigation, the system builds navigation automatically from the discovered page list. **Where:** Site creation → Clone from existing website → generated navigation **How to test:** - Clone a site that has a multi-level dropdown navigation - Verify the generated site includes navigation links to the cloned pages **Watch for:** Cloned sites rendering with no navigation menu
When cloning a single-page app or JS-rendered site, the plain HTTP capture sometimes won the race and returned only the static server shell — few or no images. The richer JavaScript-rendered HTML from the browser capture was then discarded. Now the browser-rendered version is used when it arrives and is richer, ensuring images are correctly extracted even from JS-heavy sites. **Where:** Site creation → Clone from existing website **How to test:** - Clone a React or Vue-based website - Verify the generated site includes images from the source site rather than generic placeholders **Watch for:** Cloned sites showing no images or all generic stock photos when the source site had real images
Fresh ecommerce sites were hitting multiple crashes during the publish pipeline — including a server-rendering error when cart and gallery components ran in SSR mode, and a subdomain availability check that incorrectly blocked valid new subdomains. All four blocking publish errors are resolved so new ecommerce sites can go live without manual intervention. **Where:** Site editor → ecommerce site → Publish **How to test:** - Create a new ecommerce site from scratch - Click Publish and complete the subdomain setup - Confirm the published storefront loads with the cart, product gallery, and mini-cart working **Watch for:** "createPortal is not a function" error during publish; subdomain field incorrectly showing the subdomain as taken; published storefront showing blank sections or JavaScript errors
Three content gaps in AI-generated sites are now closed: Google Maps embeds previously showed "API key invalid" errors on all published pages; contact forms on inner pages occasionally used mismatched IDs that broke submissions; and missing content sections were not reliably detected and filled before publish. All three are now fixed automatically during generation. **Where:** Site editor → generated site → any page with a map or contact form **How to test:** - Generate a site for a local business (e.g. dental practice, restaurant) that includes a location - Confirm the map on the published site renders correctly without an API key error - Fill out and submit the contact form on an inner page; confirm it goes through **Watch for:** "This page can't load Google Maps correctly" error on published pages; contact form submissions failing on inner pages; blank sections that should have content
After starting a full site build, you'll receive an email with a direct link to your new site once it's done — so you can close the tab and come back when it's ready instead of waiting on the page. **Where:** Site editor → Site Planner → builds triggered from the initial "Build Full Site" flow **How to test:** - Start a full site build via the Site Planner - Close the tab or navigate away - Confirm an email arrives once the build completes, with a link that opens the finished editor **Watch for:** Email arriving with "0 pages built" if all pages failed; email firing on small incremental page additions (should only fire on the initial full-site build)
When an AI image provider stalled on a cold start, the entire generation or image-fulfillment run would freeze indefinitely. Each provider call is now capped at 2 minutes; a stalled slot falls back to a gradient placeholder so the rest of the site continues loading. **Where:** Site generation and image gallery processing **How to test:** - Generate a site with image slots; confirm it completes even if some image slots get gradient placeholders - A second generation on the same site should produce real images once providers are warm **Watch for:** A generation that hangs silently for more than a few minutes with no progress; all image slots remaining blank after a long wait
The intake form previously labeled sections as "01, 02, 03" and questions as "Q1, Q2" — making it hard to tell section breaks apart from individual questions. Sections now show A, B, C and questions use plain 1, 2, 3. **Where:** Site setup → intake form (preference questionnaire) **How to test:** - Open the intake form for a new site - Confirm section headers read "A", "B", "C" (not "01", "02", "03") - Confirm question numbers read "1", "2", "3" (not "Q1", "Q2", "Q3") **Watch for:** Labels reverting to zero-padded numbers or Q-prefix after a page reload
Clicking the text or icon inside a radio card option in the intake form had no effect — only clicking the thin border around it registered. Options now respond to clicks anywhere on the card. **Where:** Site setup → intake form → any radio-card style question **How to test:** - Open the intake form for a new site - Click the label text inside a radio-card option (not the border) - Confirm the option selects **Watch for:** Options requiring precise border-edge clicking to register
When building a multi-page site, each inner page now receives a page-specific brief so the content and layout feel distinct — service detail pages no longer look interchangeable. Navigation links also automatically update after new pages are added, replacing #anchor placeholders with real page routes. **Where:** Site editor → Site Planner → expand to multiple pages **How to test:** - Use the Site Planner to generate a 5+ page site - Compare the content and block shapes across service/detail inner pages — they should feel different from each other - Check the navigation links on the published site; confirm they link to the correct pages (not #anchors) **Watch for:** Inner pages with identical-looking block layouts; nav links still pointing to #anchor hashes after page expansion; "Your Industry-Specific Headline Here" appearing in generated page content
When you publish a brand-new ecommerce site with no products yet, the platform now generates a domain-matched starter catalog based on your business description — replacing the generic placeholder products (t-shirt, mug, planner) with realistic items relevant to your industry. The catalog is created automatically on first publish. **Where:** Site editor → ecommerce site → Publish (first publish on a site with no products) **How to test:** - Create a new ecommerce site (e.g. for a boutique clothing store or specialty food shop) - Do not add any products manually - Publish the site and check the storefront — confirm products match the business type **Watch for:** Generic placeholder products appearing despite having a specific business description; publish failing on fresh ecommerce sites; starter catalog products with mismatched names or prices
Page file names like "PricingPlans" were displayed correctly in the desktop pages list and mobile sheet, but showed as "PricingPlans" (no space) in the Mission Control sidebar. All three views now use the same formatting logic so page names are consistently readable everywhere. **Where:** Site editor → Mission Control sidebar → page list **How to test:** - Open a site with multi-word page names (e.g. PricingPlans, AboutUs, ContactUs) - Compare how page names appear in the desktop Pages panel, the mobile page sheet, and the Mission Control sidebar - Confirm all three show "Pricing Plans", "About Us", "Contact Us" (with spaces) **Watch for:** CamelCase page names in the Mission Control sidebar while other views show them with spaces
Switching between pages in the site editor could trigger hundreds of simultaneous save requests, all failing with version-conflict errors, causing the editor to freeze indefinitely. Saves are now serialised so only one runs at a time. **Where:** Site editor → Pages panel → click any page **How to test:** - Open a multi-page site in the editor - Rapidly switch between pages several times - The editor should remain responsive; no spinning/frozen state **Watch for:** Editor freezing after a page switch; version-conflict errors appearing repeatedly in the browser console
When you paste a website URL during onboarding, you now get an inline card asking whether you want to redesign that site (keep the look but with fresh content) or use it only as a style reference. This replaces ambiguous suggested-reply chips with a single clear step. **Where:** Site setup chat → paste any website URL → confirmation card appears **How to test:** - Start a new site and paste a competitor URL in the chat - Confirm a card appears with intent options (redesign vs. reference) - Select an option and confirm the chat continues with your choice **Watch for:** Card not appearing after URL paste; duplicate confirmation cards appearing; chat not continuing after selecting an option
Inner pages were occasionally generated with literal placeholder text like "Your Industry-Specific Headline Here" visible in the hero section — copied verbatim from a prompt example the AI mistook for real content. These placeholder strings have been renamed to unambiguous sentinel values so the AI can no longer reproduce them in output. **Where:** Site editor → any AI-generated inner page → hero section **How to test:** - Generate a multi-page site and check each inner page's hero heading - Confirm no page contains "Your Industry-Specific Headline Here" or similar placeholder text - Re-generate a page if needed and verify the output uses real, contextual copy **Watch for:** Hero headings showing placeholder text; same generic headline appearing on multiple inner pages; "Confidence in Every Smile / Your Industry-Specific Headline Here" combos on dental or health sites
After the AI assistant switches to a new page, the site preview would sometimes freeze on "Loading preview..." with no error or recovery — requiring a hard browser refresh to continue. Two safeguards now ensure the preview always recovers: a 30-second compile timeout and an automatic retry if the iframe stops responding. **Where:** Site editor → preview iframe (right panel) **How to test:** - Open the site editor and ask the AI assistant to edit an inner page (e.g. "Update the Services page") - Confirm the preview switches to the new page and loads correctly - If it previously got stuck, confirm it now shows a "Retry" option or auto-recovers **Watch for:** Preview stuck on "Loading preview..." with no spinner movement after 30+ seconds; page switch from AI assistant leaving an indefinitely grey preview area
Streaming progress counters in the editor (e.g. page build progress, AI operation status) were being buffered by the CDN layer and delivered in large batches instead of one update at a time, making the UI appear to jump or stall. All streaming endpoints now send the correct no-buffering headers. **Where:** Site editor → AI Chat → any streaming operation (site plan, regeneration, bulk pages) **How to test:** - Trigger a multi-step AI operation and watch the progress indicator - Progress should update smoothly and incrementally, not in sudden jumps at the end **Watch for:** Progress counter jumping from 0 to a high number all at once; streaming operations that appear to do nothing then complete instantly
When you're redesigning your own site, the intake form now skips questions extraction already answered (industry, sections, style) and instead asks what wasn't working and what to keep — plus shows your extracted images so you can pick which ones to carry over. **Where:** Site setup chat → paste your own URL → choose "Redesign" → intake form **How to test:** - Paste your own website URL, select "Redesign", and proceed to the intake form - Confirm the form shows a "What's not working?" field and an image selection gallery - Verify the generated site reflects the pain points you described **Watch for:** Intake form asking basic industry/niche questions after a redesign selection; image gallery not showing the source site's images; pain points not influencing the generated design
When applying a theme or color refinement on multi-file sites, only the current page preview updated — all other blocks (Header, Hero, etc.) continued showing the old colors. Now all changed files are returned correctly so every block preview reflects the update immediately. **Where:** Site editor → Design Assistant → refine a color or theme **How to test:** - Open a multi-file site in the editor - Apply a color or theme change via the Design Assistant - Check that Header, Hero, and other blocks all update to the new colors without a page reload **Watch for:** Individual blocks still showing stale colors after a theme refinement
Layout notes, content notes, and animation preferences you typed in the Plan tab could be silently erased when the AI returned a full section list. These fields are now preserved by matching section IDs, so your manual notes survive any AI-driven plan update. **Where:** Site setup → Plan tab → per-section notes fields (layout, content, animation) **How to test:** - Open the Plan tab and type notes into a section's layout or content notes field - Trigger an AI update that affects the sections (e.g., ask the AI to add or rearrange sections) - Confirm your notes are still present in the updated sections **Watch for:** Notes disappearing after any AI interaction with the plan; notes from one section appearing on a different section after the AI reorders them
You can now click "Continue in background" during a site build and keep working in the editor while the build finishes. A slim progress bar at the top of Mission Control shows live status — pages created, current step — and automatically opens the finished site when it's done, even if you navigate away or refresh. **Where:** Site editor → Site Planner modal → "Continue in background" button (appears while building) **How to test:** - Start a full site build in the Site Planner - Click "Continue in background" before the build finishes - Navigate around Mission Control — the top banner should show live build progress - When the build completes, the banner should flash "Your site is ready" and reload **Watch for:** Banner not appearing after clicking "Continue in background"; progress counter frozen; site not reloading when build finishes
The page discovery step during site cloning had several gaps: compound slugs containing junk words (like `/feed-your-family`) were incorrectly dropped; robots.txt `Allow:` rules were ignored so protected pages were missed; and similar-looking URLs like `/pricing` and `/pricing-table` were incorrectly treated as the same page. All three are now fixed. **Where:** Site creation → Clone from existing website → page selection **How to test:** - Clone a site with a robots.txt that uses `Disallow: / Allow: /page` pattern - Verify those allowed pages appear in the discovered page list - Clone a site with URLs that share a prefix (e.g. /pricing and /pricing-table) — both should appear as separate pages **Watch for:** Missing pages in the clone page list, or pages being merged that should be separate
If a generation crashed mid-way through finalizing or extracting, the site was left in a state that blocked all future generations — the stuck-state detector only looked for early-phase statuses and never cleared late-phase ones. The detector now covers the full active-status set, and the stale timeout is raised from 3 to 15 minutes so that long-running AI fallbacks aren't falsely failed mid-write. **Where:** Site editor → "Generate" button / Site setup → generation flow **How to test:** - Trigger a generation and let it complete normally — confirm status ends as "completed" or "failed", not stuck - If a generation previously got stuck (the Generate button is grayed out or the spinner never clears), regenerating should now work **Watch for:** "Generation already in progress" blocking a new generation despite no active generation running; a site stuck at "finalizing" or "extracting" forever
Several issues found in end-to-end testing of the site builder are now fixed: the Site Planner progress bar was stuck at 0/N due to streaming compression, the Pages view showed page titles instead of readable names, the Publish dialog was missing required form fields in certain states, and inner page prompts were not receiving the correct site context. **Where:** Site editor → Site Planner modal; Pages panel; Publish dialog **How to test:** - Run the Site Planner on a new site and watch the progress counter — it should tick up as each page is built - Check the Pages panel; page entries should show readable names not raw file slugs - Open the Publish dialog and confirm all fields are present and submittable **Watch for:** Progress stuck at 0/N throughout the whole planner run; pages showing file paths instead of names in the panel; Publish dialog missing input fields or submit button
A storm of save conflicts could cause the site preview to get stuck on "Loading preview…" permanently, even after the conflicts resolved. The preview watchdog timer is now correctly reset so it always recovers and shows the compiled result. **Where:** Site editor → live preview panel **How to test:** - Make several rapid edits in the editor while the preview is loading - The preview should always eventually render; it should never stay stuck on the loading spinner **Watch for:** Preview panel showing "Loading preview…" indefinitely with no further updates; having to refresh the page to see the preview again
Applying a style change across an entire site (color scheme, typography, animation, theme) previously required a separate AI call for each component — taking 2–6 minutes for large sites. The platform now batches these into a single AI call, cutting site-wide refinement time by up to 80% for sites with 8+ components. **Where:** Site editor → AI Chat → any site-wide style request (e.g. "change the color scheme to dark blue") **How to test:** - Ask the AI assistant to apply a site-wide change (e.g. "update the font to a serif throughout the site") - Note the time taken compared to before; large sites should complete in under a minute - Confirm all components reflect the change, not just the first few **Watch for:** Site-wide refines timing out or completing only partial updates; components missed in the style pass; style inconsistencies between different sections after a theme change
After asking the AI to change colors or fonts (a theme-only edit), the site preview briefly showed blank instead of the updated design. The theme file was being applied as homepage code in the browser, causing the blank. Theme changes now correctly refresh the preview from the database. **Where:** Site editor → Chat tab → ask to change colors, fonts, or theme **How to test:** - Ask the AI to "change the primary color to blue" or "use a different font" - Confirm the preview updates to show the theme change without going blank - Refresh the page — the change should persist **Watch for:** A completely blank preview immediately after a color or font change; the AI appearing to succeed (no error message) but the preview not updating
Restoring a past version while viewing a different design variation than the active one would silently write the restored files into the wrong variation — leaving the intended variation untouched and overwriting unrelated work. Version restore now always writes to the variation the user is currently viewing. **Where:** Site editor → Settings → Version History → Restore **How to test:** - Switch to a non-active design variation (e.g. Design 3 when Design 1 is active) - Restore a past version from the history panel - Confirm the restored files appear in Design 3, not Design 1 **Watch for:** Restored version appearing in a different variation than expected; "Restore" succeeding but the viewed variation showing no change
When a customer adds items to their cart and leaves without checking out, an automated recovery email with a direct link back to their cart is now sent after the configured delay — helping recover lost sales without any manual follow-up. **Where:** Site Editor → Settings → Automations → Abandoned Cart (enable recipe) **How to test:** - Enable the abandoned cart automation recipe for a site - Add items to the cart as a customer (without signing in, enter an email at checkout) - Wait for the configured delay without completing the order - Verify a recovery email is sent with a working "return to cart" link - Click the link and confirm the cart is restored with the same items **Watch for:** Recovery email not sent; double-sending to the same customer; email sent even after the order is completed
When you ask the AI to improve backgrounds, gradients, or animations on your site, it now produces more visually polished results — using real CSS motion instead of simple fades, inline textures, and a broader color palette. **Where:** Site Editor → AI Chat → any visual refinement request (e.g. "add an animated background", "make this section more visually interesting") **How to test:** - Ask the AI to add or improve an animated or gradient background on a section - Confirm the result uses real CSS animation rather than just an opacity pulse - Check that no external image URLs are used for textures - Verify animations respect reduced-motion preferences (prefers-reduced-motion) **Watch for:** Visual regressions on simple color-change requests; external URLs appearing in CSS backgrounds
A rare failure during AI context loading caused section-level edits (like updating a features block) to overwrite the whole homepage instead — this is now prevented by using a safe fallback context so the edit lands on the correct file. **Where:** Site Editor → AI Chat → any section refinement request **How to test:** - Open a multi-page site in the editor - Ask the AI to update a specific section (e.g. "update the features section") - Confirm only the targeted section changes and the full page composition stays intact - Verify the homepage is not replaced by a single section component **Watch for:** Homepage replaced with a single section component after an AI edit request
When you reference an image from the asset library or @-mention an asset during a refine request, the AI now actually sees the image (not just the URL) — so it can follow visual instructions like "match the style of this photo" accurately. **Where:** Site editor → AI refine chat — @-mention an asset or attach an image from the library **How to test:** - Open any site in the editor and start a refine conversation. - @-mention an image asset and ask the AI to style something to match it. - Verify the AI's response reflects the image content (colors, style, layout) rather than only responding to the text description. **Watch for:** This fix applies to images selected from the asset library (HTTPS URLs). Base64-pasted images already worked before this change. Very large images may increase AI response time slightly.
The opening greeting in the blueprint chat wizard now stays in your conversation history after a page refresh — previously the first question disappeared, leaving a disconnected chat thread. **Where:** Site Editor → AI Setup Chat (blueprint wizard) **How to test:** - Start a new site and open the AI setup chat - Type your first reply to the greeting question - Refresh the page - Verify the greeting question is still visible above your answer **Watch for:** Chat history starting from the user's first reply with no preceding AI greeting
The AI site planner was returning a stale cached plan after every content edit because its cache fingerprint included a timestamp that changed on every save — now it correctly re-runs the planner when actual content changes. **Where:** Site Editor → AI Chat → site structure or page planning requests **How to test:** - Generate a site and let the AI planner run - Edit a page or blueprint field and trigger the planner again - Confirm the planner reflects the updated content rather than returning the previous result **Watch for:** Site planner returning the same plan regardless of content edits; blueprint data clearing after a planner run
Forms created during AI site generation were silently dropped and never saved to the site — so a generated site with a booking form would show a placeholder instead of the real form. Forms now flow through the generation pipeline and persist properly. **Where:** Site Editor → any AI-generated site with a booking or contact form **How to test:** - Generate a new site for a service business (e.g., restaurant, salon, consultant) that would include a booking form - After generation completes, check that form sections render with real fields rather than a "Booking form configuration required" placeholder **Watch for:** Booking or contact form sections showing a blank placeholder after generation; form fields missing from the published site
AI-generated sites occasionally had sections that rendered blank because the generated code referenced content fields that weren't saved — for example, the code read `hero.heading` but the AI saved it as `hero.headline`. A new completeness check and save-time repair layer catches these mismatches automatically so every section renders with real content. **Where:** All AI-generated sites **How to test:** - Generate a new site for any business type - Check that all sections (hero, features, testimonials, pricing, etc.) render with actual content rather than empty space - Regenerate a section and confirm new content fills in correctly **Watch for:** Sections rendering completely blank; hero images appearing as empty bordered boxes; testimonials or pricing tables with no text
The AI design assistant can now pull images from any public webpage and add them to your site's asset library on request. You can describe which images you want (e.g. "import the team headshots from our company website") and the AI will filter by intent before importing. **Where:** Site editor → AI Chat panel → type "import images from [URL]" **How to test:** - Open the AI chat panel - Type "import images from [any public URL]" (e.g. your company's About page) - Confirm the assistant imports relevant images and they appear in your asset library **Watch for:** Assistant not recognizing URL import requests; all images imported regardless of stated intent; imported images not appearing in the asset library after the assistant confirms success
The brand color question in the site setup flow now shows clickable color palette swatches tailored to your industry — instead of a blank text field that required typing hex codes. Pick a palette that matches your brand's feel in one click. **Where:** New site setup → Brand preferences → Color palette question **How to test:** - Start a new site and go through the intake questions - When the brand color / palette question appears, confirm color swatches are visible - Click a palette to select it and confirm the selection is registered **Watch for:** Palette question still showing a plain text input; swatches not matching the industry selected (e.g., restaurant palettes appearing for a law firm)
Clicking "Continue with This Design" now flows directly into the site planner and build process with smooth loading messages — no more blank screens or confusing intermediate steps between choosing a design and watching your pages get built. **Where:** Site Editor → design selection → "Continue with This Design" button **How to test:** - Start a new site and pick a design - Click "Continue with This Design" - Confirm a "Setting up your site…" overlay appears immediately, followed by the site planner progress modal showing pages being built - No blank gap or UI flash between steps **Watch for:** Blank white screen between design approval and the progress modal; site ending up in an unexpected state (design row instead of build row)
The "Build my site" step was silently failing and leaving sites in a broken state — they appeared under "Designs" in the dashboard but opened as if they were builds, with no proper build row created. This was caused by stale database columns being written. The build process now creates the correct site structure every time. **Where:** Site Editor → design → "Build my site" **How to test:** - Start a new site, choose a design, and click "Build my site" - Confirm the site appears correctly under your builds (not designs) in the dashboard - Open the built site and confirm the editor and Mission Control work normally **Watch for:** New site appearing under Designs instead of Builds; site editor opening in design mode after build; Mission Control not accessible for the new site
Campaign attribution for form submissions was silently failing — submissions from landing pages weren't being linked to the correct campaign, and the marketing dashboard card could disappear permanently after a brief network error. **Where:** Site Editor → Growth → Campaigns → (attribution in form submission reports) **How to test:** - Create a campaign linked to a landing page with a form - Submit the form from a visitor session that came through the campaign URL - Check the campaign report and confirm the submission is attributed correctly - Verify the marketing card on the home dashboard remains visible after a page refresh **Watch for:** Form submissions showing zero attribution; the Growth/Marketing card disappearing from the dashboard after a network error
The setup wizard's "do you have an existing website?" question now shows a simple Yes/No choice — selecting Yes reveals an inline URL field, eliminating a confusing third option that overlapped with "Yes." **Where:** Site Editor → New Site → Setup Wizard → existing website question **How to test:** - Start creating a new site - Reach the "existing website" step in the setup wizard - Confirm there are only two options: Yes and No (no redundant "yes but no URL" option) - Select Yes and verify an inline URL text field appears immediately - Enter a URL and confirm it's included in the summary message **Watch for:** Three-option layout persisting; URL field not appearing on Yes selection
External systems like POS terminals, ERPs, and marketplace hubs can now push stock changes into your Mondovo store via a signed webhook — so inventory stays accurate across all your sales channels without manual updates. **Where:** Site Editor → Mission Control → Store settings → Inventory sources (coming to UI soon; API-ready now) **How to test:** - Configure a webhook source for your external system using the inventory sources API - Trigger a stock change in the external system - Confirm the updated quantity appears on the product in Mondovo **Watch for:** Webhook signature validation errors; stock quantities not updating after a push; conflict entries appearing when the same SKU is updated from multiple sources simultaneously
When the design assistant created a new variation, the editor would sometimes get stuck showing "Reconciling this variation with the latest files" for up to 30 seconds — leaving users unable to see or interact with their new design. The variation now loads immediately. **Where:** Site Editor → design assistant → new variation creation **How to test:** - Open the site editor and use the design assistant to generate a new variation - Confirm the new variation appears in the preview without showing a "Reconciling" loading state - Switch between existing variations to confirm they still load correctly **Watch for:** "Reconciling this variation with the latest files" message appearing after variation creation; preview remaining blank after the assistant finishes
Verified buyers can now submit star ratings and written reviews for products they've purchased, and any past order can be reordered in one tap. Reviews go through merchant moderation before appearing on the storefront, so you stay in control of what's published. **Where:** Customer portal → Orders → Reorder; customer portal → Orders → Leave a review **How to test:** - Log into the customer portal with an account that has at least one completed order - Open an order and tap "Reorder" — the items should appear in the cart - Open a product from a past order and submit a star rating + review text - Log into the merchant dashboard and confirm the review appears as "Pending" for approval **Watch for:** Reorder button not appearing; review submission showing a 409 error (duplicate); reviews appearing publicly before merchant approval
The customer account portal now shows a "Reorder" button and "Download invoice" link on every order — reordering copies the original items into the cart with current pricing, while the invoice link fetches a generated PDF. **Where:** Storefront → My Account → Purchases **How to test:** - Sign in as a customer with at least one completed order - Navigate to My Account → Purchases - Click "Reorder" on a past order and confirm items appear in the cart with current prices - Click "Download invoice" and confirm a PDF is downloaded - Verify only ecommerce orders show these actions (not appointment/service orders) **Watch for:** Reorder button missing on ecommerce orders; invoice download returning an error; cart not populated after reorder
When you publish an ecommerce site, the platform now automatically adds the standard commerce pages — product listing, cart, checkout, and order confirmation — so customers have a complete shopping flow without any manual page setup. **Where:** Visible on published ecommerce sites at `/products`, `/cart`, `/checkout`, and `/order-confirmation` **How to test:** - Publish an ecommerce site that has products in the catalog. - Visit the published site and navigate to `/products` — a product listing page should appear. - Add a product to cart and proceed through `/cart` and `/checkout` to `/order-confirmation`. - If your site already has custom versions of these pages, those take priority and auto-injection is skipped. **Watch for:** Auto-injection only triggers when the site has at least one product or imports a commerce runtime component. Sites with no catalog data will not have these pages injected.
Google OAuth now initiates through our own server instead of redirecting directly to a third-party auth URL — so sign-in works even when external auth services are temporarily slow, and errors surface as clear messages instead of blank or broken pages. **Where:** Sign-in page → "Sign in with Google" button **How to test:** - Click "Sign in with Google" on the login page — the Google account picker should appear without any delay or blank-page flash. - Verify successful sign-in redirects back to the dashboard correctly. - If Google OAuth credentials are not configured, a clear error message should appear instead of a broken redirect. **Watch for:** The new server-side flow requires `GOOGLE_CLIENT_ID`, `GOOGLE_CLIENT_SECRET`, and the callback URL registered in the Google Cloud console. Sites using the old client-side redirect may see an extra hop — this is expected during the transition.
Guest checkouts (orders placed without an account) were failing to generate invoices — the portal showed "generating" indefinitely and the invoice never appeared. Additionally, reordering a previous purchase was silently adding items to an empty cart. Both issues are fixed. **Where:** Customer portal → Orders → Invoice; customer portal → Orders → Reorder **How to test:** - Complete a guest checkout (no account login) and then view the order in the portal - Confirm an invoice is generated and available to download - Use the "Reorder" button on a past order and confirm the correct items appear in the cart **Watch for:** Invoice status stuck on "generating" for guest orders; cart appearing empty after tapping Reorder
You can now import images from a webpage URL directly from the My Assets panel — without needing to click on a specific image in the editor first. A toggle in the panel header switches between your asset library and the URL import view, and successfully imported images are added to your library automatically. **Where:** Site editor → Assets panel (left rail) → "From URL" toggle **How to test:** - Open the Assets panel in the site editor - Click the "From URL" toggle in the panel header - Paste a URL and import images; confirm they appear in My Assets after import **Watch for:** Toggle button missing from the Assets panel header; imported images not refreshing into the My Assets view; URL import panel not appearing inline
Paste a webpage URL into the image picker and pull every image on that page into your site assets in one step — no more saving photos one at a time when migrating from an existing website. The design assistant can also do this from chat ("import the team headshots from https://oursite.com/about"), with an optional intent filter that uses vision AI to keep only the images matching what you asked for. **Where:** Site Editor → click any image → "From Webpage" tab (or ask the AI assistant in chat) **How to test:** - Open the image picker on any image element - Click the new "From Webpage" tab - Paste a public webpage URL (your old site, a portfolio page, etc.) and click Fetch images - Confirm thumbnails of the page's images appear with checkboxes - Pick which to keep, click Import — they should appear in your Assets tab with a green highlight - In the AI chat, try: "pull the team photos from https://example.com/about" — assistant should preview candidates first, then commit only on your confirmation **Watch for:** Slow fetches on JS-heavy sites (we render the page in a real browser when needed, which takes a few extra seconds); images blocked by the source site's bot protection (we'll show "no images found" and you can try a different URL); duplicate imports from re-running on the same URL — these reuse the existing asset rather than creating duplicates
A new "From Webpage" tab in the asset picker lets you paste any public URL and bulk-import the images from that page directly into your site's asset library. Useful for pulling in images from your existing business website without downloading and re-uploading them manually. **Where:** Site editor → any image element → replace image → "From Webpage" tab **How to test:** - Click an image in the site editor and choose to replace it - Select the "From Webpage" tab - Paste a URL and confirm the page's images appear as selectable thumbnails - Import one and verify it appears in the site and asset library **Watch for:** No images appearing for valid URLs; import failing silently; imported images not appearing in My Assets after selection
When importing images from websites like Wikipedia or Stripe that serve images from a separate CDN domain, the importer was filtering out all images as "off-site." CDN-hosted images now import correctly, and SVG images are included as candidates instead of being silently excluded. **Where:** Site Editor → image picker → "From Webpage" tab **How to test:** - Open the image picker and go to the "From Webpage" tab - Paste a URL from a site that uses a CDN (e.g., a Wikipedia article or a SaaS product page) - Confirm images appear as candidates even if they're served from a different subdomain **Watch for:** "No images found" on pages that clearly have content images; SVG illustrations not appearing in the candidate list
Product catalogs can now be bulk-imported from a Shopify CSV export file — variants, images, prices, and inventory all transfer automatically, so migrating an existing Shopify store takes minutes instead of manual data entry. **Where:** MC → Pages → Products → Import → choose "Shopify" as the source **How to test:** - Export a products CSV from a Shopify store (Shopify admin → Products → Export). - In MC, navigate to the Products content type and click Import. - Select the Shopify source card and upload the CSV. - Verify products, variants, and images appear in the catalog after import. **Watch for:** Only the Products content type shows the Shopify import option — it does not appear for other content types. Image URLs from Shopify are copied by reference; if the Shopify store is later taken offline, those image URLs will break.
The "Visit ↗" link on inspiration and competitor chips in the site setup flow was never appearing — the URL was being stripped before the preference card was displayed. Links now show correctly so you can visit the inspiration sites while making your selections. **Where:** New site setup → style / inspiration preference questions **How to test:** - Start a new site and go through the intake questions until you reach an inspiration or competitor question - Confirm each chip has a "Visit ↗" link - Click the link and confirm it opens the correct URL in a new tab **Watch for:** "Visit ↗" link missing from chips even when the chip represents a real website; links opening incorrect URLs
Products can now be priced dynamically based on live metal rates and stone prices — set a per-gram gold rate, stone cost per carat, and making charges, and prices update automatically as commodity rates change. Every order captures a pricing snapshot so invoices always show the rate at time of purchase. **Where:** Site Editor → Mission Control → Store → Products → Variants → Pricing (commodity mode) **How to test:** - Open a product with variants and switch to commodity pricing mode - Set a gold rate (e.g., ₹6,800/gram), purity (22k), weight (5g), and making charges - Confirm the calculated price is correct on the product page - Place a test order and check that the invoice shows the metal rate breakdown **Watch for:** Price showing as ₹0 or "NaN"; invoice missing the pricing breakdown; rate updates not reflecting on the storefront
Customers now see real-time shipping rates fetched directly from Shiprocket, EasyPost, or ShipStation at checkout instead of fixed rates from a table — the cheapest available service is shown by default, with prices reflecting current carrier pricing. **Where:** Storefront checkout on any ecommerce site with a fulfillment provider configured **How to test:** - Connect a fulfillment provider (Shiprocket, EasyPost, or ShipStation) in MC → Settings → Fulfillment. - Add a product to cart on the storefront and proceed to checkout. - Enter a delivery address — shipping options with live carrier rates should appear. - Compare rates against what the carrier portal shows for the same origin/destination/weight. **Watch for:** Live rate lookups require a valid origin address configured in the fulfillment provider settings. If no live rates are returned, the system falls back to the rate table configured in MC → Settings → Shipping. Rate results are cached for 10 minutes to avoid hammering carrier APIs on every cart edit.
After generating a multi-page site (education, events, hospitality, etc.), the header navigation now automatically links to all the generated pages — previously the nav could still show anchor links to homepage sections instead of the new page URLs. **Where:** Site Editor → Generate Site (multi-page sites with 3+ pages) **How to test:** - Generate a multi-page site (e.g. an education site with Courses, Faculty, and Events pages) - Preview the site immediately after generation - Click every navigation link and confirm each routes to the correct page (not an in-page anchor) **Watch for:** Navigation links pointing to #section-name instead of /page-slug; newly generated pages not reachable from the header
Creating a new workspace after signing up was throwing a server error on first request, leaving users stuck with "Unable to create your workspace" — the broken API routes are restored and the retry button now correctly re-tries the right flow. **Where:** Onboarding → Create Workspace (new user sign-up flow) **How to test:** - Create a new account and go through the onboarding flow - Complete the workspace creation step and confirm it succeeds on the first attempt - If a transient error appears, click "Try Again" and confirm it retries successfully without redirecting to an invite-code page **Watch for:** "Unable to create your workspace" error on a fresh sign-up; "Try Again" bouncing to /auth/invite-code
The opening "Hi, what's your business?" question disappeared from the chat as soon as you sent your first reply, leaving the conversation history starting with your answer but no question. The opening message now stays in the thread so the conversation reads naturally. **Where:** New site setup → AI chat intake flow **How to test:** - Start a new site and enter the chat-based intake flow - Send your first reply to the opening question - Scroll up in the chat — the original question should still be visible above your answer **Watch for:** Chat history starting with your reply but no preceding question; the opening message disappearing on send
Customers now automatically receive an email receipt after a successful payment and a shipping notification with their tracking number when an order ships. **Where:** Configured in MC → Settings → Automation — look for the "Order Paid" and "Order Shipped" recipe templates **How to test:** - Complete a checkout on an ecommerce storefront and verify a confirmation email arrives. - Fulfill an order from MC → Orders and add a tracking number — customer should receive a shipping notification. - Check MC → Settings → Automation to edit the email templates for both triggers. **Watch for:** Emails only fire when an automation recipe of the matching type exists and is enabled for the site. A site with no recipes configured will send no emails until one is created.
Every paid order now automatically generates a professional PDF invoice with business details, line items, and tax breakdown — customers can download it from their account and merchants can share it directly. **Where:** Storefront → My Account → Purchases → Download Invoice **How to test:** - Place and pay for an order on an ecommerce site - Navigate to My Account → Purchases - Click "Download invoice" and confirm a PDF is returned with correct order details - Verify the invoice includes line items, totals, and GST breakdown for Indian tax mode **Watch for:** Invoice link returning 404 immediately after payment; PDF missing business or customer details; duplicate invoice numbers on repeated downloads
The "Order Receipt" and "Order Shipped" automation recipes were missing from the Automation UI even though the backend supported them — they now appear alongside the other recipe types so you can set up post-purchase email automations. **Where:** Site Editor → Mission Control → Leads → Automation → Recipes **How to test:** - Open the Automation Recipes view for a store site - Confirm "Order Receipt" and "Order Shipped" cards appear in the recipe list - Open either recipe and check that the variable hints panel shows order-specific variables (not booking/review variables) **Watch for:** Recipe cards missing after a page refresh; variable hint panel showing irrelevant variables for order recipe types
Sites using platform-provided components (event registration, forms, booking widgets) were throwing a build error — "No matching export for import default" — that prevented previews and published sites from loading. Platform components now export correctly and load without errors. **Where:** Site Editor → preview; published site **How to test:** - Open a site that uses event registration or other platform components - Confirm the preview loads without a white screen or console error about missing exports - Publish the site and confirm it loads correctly at the published URL **Watch for:** White screen in the preview with no content; "No matching export" error in browser console; published site failing to load
Shoppers can now browse products by category on the storefront — a RuntimeCategoryListing component renders the full category tree with images, and clicking a category shows only the matching products. **Where:** Storefront — category pages injected automatically when categories are configured; AI can also add a category listing section to any page **How to test:** - Set up product categories in MC → Pages → Categories. - Assign products to categories. - Visit the published storefront — navigate to a category listing URL (e.g. `/categories/mens-shoes`) and verify only products in that category appear. - Verify the top-level categories endpoint returns the correct hierarchy at `/api/storefront/[siteId]/categories`. **Watch for:** Category pages are only generated at publish time when categories exist in the catalog. An empty category (no assigned products) still renders but shows no products.
Sites with published products now automatically get individual product detail pages (e.g. /products/blue-widget) at publish time — no template file needs to be manually created, so every product gets its own URL out of the box. **Where:** Site Editor → Publish → (auto-generated /products/{slug} pages) **How to test:** - Add products to an ecommerce site that has no custom products-template file - Publish the site - Visit /products/{product-slug} on the published site and confirm a proper product detail page renders - Confirm the page includes the site's Header and Footer **Watch for:** 404 on /products/{slug}; product page missing header or footer; template injection overwriting a custom template
Customers can now read and submit reviews directly on product detail pages — verified purchasers see a review form with a star picker and optional title/body, while all visitors see the aggregate rating and approved reviews. **Where:** Storefront → Product Detail Page → Reviews section **How to test:** - Visit a product detail page on a published ecommerce site - Scroll to the reviews section below the product description - Confirm aggregate star rating and review count are shown - Sign in as a customer who has purchased the product and submit a review - Confirm the review shows a pending confirmation message - As the merchant, approve the review and verify it appears publicly **Watch for:** Reviews section not appearing on product pages; form showing for non-purchasers; "No reviews yet" state not shown correctly
The product variants editor now supports up to 6 attribute axes (Color, Size, Material, etc.) instead of the previous limit of 3, and large variant grids stay manageable with per-axis filter chips and page-by-page browsing. **Where:** MC → Pages → Products → open a product → Variants tab **How to test:** - Open a product with 3 existing variant axes and add a 4th (e.g. a material dimension) — it should now be accepted with only a soft warning. - Create a product with 5+ variants per axis to produce 40+ rows — filter chips should appear above the grid. - Use the filter chips to narrow to specific axis values and verify "Apply to all" bulk edits apply only to the filtered subset. **Watch for:** The hard ceiling is 6 axes. Products with more than 6 axes will be rejected at save time. Very large grids (hundreds of variants) may be slow to load — use filtering to keep the visible set manageable.