← Back

What's New

The latest updates and improvements to our platform.

Friday, May 8, 2026

Fixed

Adding a page with a theme no longer crashes the editor

Adding a new page when a site had a theme selected was causing a JavaScript syntax error that broke the editor. The theme backfill logic has been corrected so new pages inherit the site's active theme without errors. **Where:** Site editor → Pages → Add page **How to test:** - Open a site that uses a custom theme or has theme styling applied - Add a new page via the Pages tab - Confirm the new page is created successfully and the editor remains functional **Watch for:** A blank editor or JavaScript error after clicking "Add page" on a themed site.

Improved

AI refinements target the right file and see full context

Refinement requests are now significantly more accurate: the AI can tell which files are actually used in your site versus leftover unused code from generation, so it targets the right component instead of an orphaned file. For complex structural changes (like fixing duplicate modals), it also sees the full file context so it can resolve root causes rather than applying superficial fixes. **Where:** Client portal → Site editor → Ask the assistant to refine your site **How to test:** - Open a site and ask the assistant to fix a layout or component issue - Confirm the change applies to the visible page, not an unused component - For modal or overlay issues, confirm the fix removes the duplicate rather than suppressing it **Watch for:** Refinements editing the wrong file; duplicate modal or overlay bugs persisting after a fix attempt

New

AI site planner now produces richer section content and handles multi-page architecture

The site planning step now generates a full narrative arc with per-section content prompts, key angles, tone guidance, CTA direction, and multi-page architecture awareness. Local businesses (restaurants, wedding planners, etc.) now reliably receive location capture questions and correct currency settings. Integration requirements like WhatsApp or Calendly now survive all AI retry paths and are correctly surfaced in the generated plan. **Where:** Blueprint Builder → intake form → Plan step **How to test:** 1. Start a new site for a local business (e.g., "wedding planner in Austin, TX"). 2. Complete the intake form — confirm a location question appears. 3. On the Plan step, confirm sections have descriptive content prompts (not just names) and a narrative overview appears. 4. Request WhatsApp integration via the intake — confirm it appears in the plan's features list. **Watch for:** Plan section items should never be empty. If the plan tab shows sections with no items, that's a regression.

Fixed

Clearer error when customizing a design that hasn't finished generating

Attempting to clone or modify a variation that was still in the process of generating produced a generic "Failed to generate" error with no indication of what went wrong. The action is now blocked with a clear, actionable message so users know to wait for generation to complete before customizing. **Where:** Client portal → Site creation → Design gallery → Customize or Clone a variation **How to test:** - Trigger site generation and immediately try to clone a variation that is still loading - Confirm you see a descriptive error explaining the design isn't ready yet, rather than a generic failure toast **Watch for:** Generic 500-style error toasts when trying to clone or modify an in-progress design

Improved

Clone a Design dialog upgraded with picker, guided wizard, and searchable import

The Clone a Design dialog now offers a richer experience: when multiple designs exist, a thumbnail picker lets you choose which one to clone before proceeding. The "Modify and Clone" flow is now a 5-tab wizard covering Style, Layout, Content, Images, and Freeform — replacing the single text box. The "Import from Site" tab now has a searchable site dropdown and a thumbnail grid for picking the source variation. **Where:** Site editor → Variations panel → Clone a Design button **How to test:** 1. Open a site with multiple design variations in the editor. 2. Click "Clone a Design" — confirm a design picker thumbnail grid appears. 3. Select "Modify and Clone" — confirm the 5-tab wizard (Style / Layout / Content / Images / Freeform) appears. 4. Select "Import from Site" — confirm the site list is searchable and variations show thumbnails. **Watch for:** Single-design sites should skip the picker and clone immediately without an extra step.

Fixed

Cloning a design with more images than the template now preserves all images

When cloning a design variation that had more images than the base template (e.g., 4 portfolio items vs 2 in the blueprint), the extra images were incorrectly stripped during the clone. The fix preserves richer content from the source when it intentionally exceeds the blueprint count. **Where:** Site editor → Variations panel → Clone a Design → clone from existing variation **How to test:** 1. Find or create a site variation with more images in a section than the default blueprint (e.g., a gallery with 6 items vs the template's 3). 2. Clone that variation. 3. Confirm the cloned variation retains all 6 images rather than being truncated to 3. **Watch for:** Cloned variations with fewer images than the source indicate the stripping is happening again.

Fixed

Color changes via the editor now persist correctly after a page refresh

When the AI changed both the homepage and shared style blocks in a single refinement request (e.g., a global color change), only the shared-block changes were saved — the homepage edits disappeared on refresh. Both sets of changes now save together in the same write. **Where:** Site editor → any color-related refinement request (e.g., "change the primary color to blue") **How to test:** 1. Open a site in the editor with shared CSS variables. 2. Ask the AI to change the primary color (e.g., "change the accent color to green"). 3. Confirm the color updates visually in the preview. 4. Refresh the page — confirm the color change persists on both the homepage and section blocks. **Watch for:** Color changes that appear in preview but revert after refresh indicate the fix didn't apply.

Fixed

Deleting the active design now correctly switches to another design

When you deleted the currently active site design variation, the editor silently jumped to the first design instead of explicitly switching — which could leave the UI in an inconsistent state. The editor now explicitly selects the next available design when the active one is removed. Restoring a version via cherry-pick also no longer creates a phantom version entry when the write fails. **Where:** Site editor → Designs tab → delete active design **How to test:** - Open a site with multiple design variations - Make sure one of the non-first designs is active - Delete the active design - Confirm the editor switches cleanly to the first remaining design with no blank state or wrong content shown **Watch for:** The editor appearing blank or showing wrong content after deleting the active design.

Fixed

Design Assistant no longer shows internal error messages

When auto-fix runs in the background and can't resolve an issue, the Design Assistant chat now stays quiet instead of surfacing confusing internal system messages. The amber preview banner clears as expected. **Where:** Site editor → Design Assistant chat panel **How to test:** 1. Open a site in the editor and trigger a scenario where auto-fix runs (e.g. a broken component). 2. Let auto-fix attempt to resolve it. 3. Confirm the Design Assistant chat does not show any message mentioning "auto-fix" or internal tooling. **Watch for:** Auto-fix errors should fail silently; only the amber banner should clear — no chat message should appear.

Improved

Design clone picker now shows screenshot thumbnails

Each design card in the Clone a Design picker now shows a 16:9 screenshot thumbnail when one is available, making it easier to visually identify which design to clone. Cards without a screenshot fall back to the existing color-swatch placeholder. **Where:** Site editor → Variations panel → Clone a Design → design picker step **How to test:** 1. Open a site with multiple design variations that have screenshots. 2. Click "Clone a Design" — confirm the picker shows thumbnail images on each design card. 3. Confirm designs without screenshots show the color-swatch fallback rather than a broken image. **Watch for:** All cards showing only color swatches (no thumbnails) when screenshots should be present.

Improved

Design gallery loads instantly on repeat visits

The design variation gallery now caches previews in the browser so that returning to the gallery after navigating away is effectively instant — no waiting for previews to re-render. Hovering a variation chip also shows the cached screenshot immediately instead of a blank popover while the preview boots. **Where:** Client portal → Site creation → Design gallery (variation chips and thumbnail cards) **How to test:** - Open a site's design gallery, let the previews load - Navigate away and return — confirm gallery thumbnails appear immediately - Hover a variation chip — confirm a screenshot preview appears instantly behind the live preview **Watch for:** Gallery still showing blank cards on return visits; chip hover popovers staying empty on revisit

Improved

Design gallery thumbnails are now crisp on retina displays

Gallery thumbnails previously appeared blurry on high-DPI (retina) screens because they showed a low-resolution screenshot. Thumbnails now display the live rendered preview by default — which is always pixel-perfect — and fall back to the screenshot only during the brief instant before the preview loads. New screenshots are also captured at full retina resolution. **Where:** Client portal → Site creation → Design gallery **How to test:** - Open the design gallery on a retina or high-DPI display - Confirm thumbnail cards show crisp, readable text and sharp edges - Hover a variation chip and confirm the popover preview is sharp **Watch for:** Thumbnails appearing blurry or soft; screenshots visibly lower quality than the live preview

Fixed

Design gallery thumbnails now load even when initial screenshot failed

If the screenshot capture step failed silently after site generation (due to server cold-start timeouts or upload errors), certain design variations would show a blank or stuck loading state in the gallery. The gallery now automatically triggers a screenshot re-capture for any variation missing a thumbnail, so all designs become visible without requiring manual intervention. **Where:** Client portal → Site creation → Design gallery **How to test:** - Open the design gallery on a site where some thumbnails appear as grey placeholders - Wait a few seconds and confirm the thumbnails populate automatically - Confirm the previously-missing designs become selectable **Watch for:** One or more design options permanently stuck as grey placeholders; the gallery showing only 1–2 variations when the site has more

Fixed

Each design variation now gets its own unique images

Design variations 2, 3, and beyond were silently inheriting images from the first variation rather than using their individually generated images. The sourced images were being resolved and then discarded, leaving later variations to fall back to the first design's photos. Each variation now renders with its own distinct imagery. **Where:** Client portal → Site creation → Design gallery → Variations D2, D3, etc. **How to test:** - Generate a new site and open the design gallery - Switch between D1, D2, and D3 variations - Confirm each variation shows different images (not copies of D1's photos) **Watch for:** Multiple variations showing the same set of images; later variations looking visually identical to D1 despite different layouts

Fixed

FAQ section crash in generated sites fixed

A rendering crash ("Cannot read properties of undefined — map") in FAQ sections caused by an incorrect AI-generated hook call is now automatically detected and repaired. Affected sites are fixed on next load without requiring manual intervention. **Where:** Any generated site containing a FAQ or Help Center section **How to test:** 1. Open a site that has a FAQ or Help Center section. 2. Confirm the section renders correctly without a blank/crashed page. 3. Inspect the section — items should map correctly without errors in the browser console. **Watch for:** Blank sections where FAQ content should appear indicate the auto-repair didn't fire.

Fixed

Fixed crash when opening the site creation page

Every user who visited the site creation page was hitting a JavaScript initialization crash that prevented the design gallery from loading. The page now loads without errors. **Where:** Client portal → New site → Design gallery **How to test:** - Navigate to the site creation page for any client - Confirm the design gallery loads without a blank screen or error boundary **Watch for:** White screen or error message on the site creation page; design gallery never appearing even after a page refresh

Fixed

Formatting a section no longer fails with 'Could not apply formatting'

Applying AI formatting to sections like Hero that use a short block ID (e.g. "hero") but have a longer file name (e.g. "hero-section") previously failed silently because the system couldn't match the two. The lookup now uses a smarter prefix-and-name strategy so formatting reaches the right component file every time. **Where:** Site editor → select a section → Format / AI formatting action **How to test:** - Open any site in the editor and trigger the format action on a Hero section - Confirm the formatting is applied without an error toast - Repeat for other sections with short names (e.g. "services", "about") **Watch for:** "Could not apply formatting" error toasts on sections that have compound file names.

Fixed

Generated gallery and grid sections no longer leave orphaned items

Gallery and bento grid sections in generated sites were not following the correct column layout rules — a 4-item gallery would use 3 columns, leaving one item awkwardly alone on the last row. The AI now consistently applies the right number of columns based on item count (2 items → 2 columns, 3 → 3, 4 → 2×2, etc.) so all items appear in balanced rows. **Where:** Client portal → Site creation and regeneration → Gallery, Portfolio, and Grid sections **How to test:** - Generate a site with a gallery or portfolio section - Confirm gallery items appear in balanced rows with no single item on the last row - For 4-item galleries, confirm a 2×2 grid rather than a 3+1 layout **Watch for:** A single image orphaned alone on the last row of a gallery; grid sections using an incorrect number of columns for the item count

New

Location field now offers one-tap fill from your detected city

When the intake form asks for your business location, it now shows a "Use my location" quick-fill chip that pre-populates the field with your detected city, region, and country — no typing required. **Where:** Blueprint Builder → intake form → Location question **How to test:** 1. Start a new site for a local business (restaurant, salon, etc.). 2. When the Location question appears, confirm a "Use my location" chip is visible below the input. 3. Tap the chip — confirm it fills in the detected city/region/country. 4. Proceed through intake and confirm the location appears correctly in the generated plan. **Watch for:** If location detection isn't available (no geo headers), the chip should simply not appear — no error.

Improved

More images from your library now appear in generated sites

The similarity threshold for matching images from your library was tuned too strictly, causing relevant images (food, yoga, dental, real estate, team photos) to be skipped and replaced with stock photos or AI-generated images. The threshold is now calibrated based on real-world measurements, so your uploaded library images are reused more often in generated and regenerated sites. **Where:** Client portal → Site creation and regeneration → All image slots **How to test:** - Upload images to your library (Admin → Image Library) - Generate a site in a matching category (e.g., restaurant images → restaurant site) - Confirm your library images appear in the generated site rather than stock photos **Watch for:** Library images being ignored in favor of generic stock photos; AI-generated images appearing when relevant library images exist

Fixed

New pages and switched designs now load proper images

When adding a new page or switching to a different design variation, the newly generated page code was not going through the image sourcing pipeline — leaving placeholder or missing images even when the site had sourced images on other pages. All page generation paths now run the full image sourcing process so newly created and switched pages have real images from the start. **Where:** Client portal → Site editor → Pages tab → Add Page; also when switching between design variations **How to test:** - Add a new page to an existing site - Confirm the new page renders with real images, not placeholder squares or broken image slots - Switch to a different design variation and check that inner pages also display correctly sourced images **Watch for:** New pages rendering with blank image slots; switching designs leaving inner pages with missing images

Fixed

New users now land in the Blueprint Builder instead of the legacy chat

New accounts and users with no existing sites were being routed to the old Blueprint Builder chat interface instead of the current Blueprint Builder wizard. They now correctly land in the wizard experience. **Where:** Onboarding flow → welcome screen → "Start building" CTA **How to test:** 1. Create a new account or navigate to `/start` without an existing site. 2. Confirm the page redirects to the Blueprint Builder wizard (not the legacy chat interface). **Watch for:** Landing on the old single-chat-column layout instead of the wizard indicates the regression has returned.

Fixed

Plan clarification answer box is now visible immediately

When the AI asks a clarifying question during the plan step, the text area for typing your answer now appears immediately — no extra button click required. When approving a proposed plan, an optional comment field is also visible upfront so you can answer any questions in the plan before approving. **Where:** Blueprint Builder → Plan step → AI clarification prompts **How to test:** 1. Start a site generation that triggers a clarification question in the plan step. 2. Confirm the answer textarea is visible immediately without clicking a "Provide Clarification" button. 3. When a plan is proposed, confirm an optional comment field appears in the approve view. **Watch for:** Clicking "Approve" without seeing a way to add notes means the optional field is missing.

Fixed

Planner sections always show content items; Continue button stays accessible during intake

The Plan step no longer shows sections with empty item lists — a silent JSON truncation bug caused by low token limits is now fixed. The Continue button in the workspace footer also doubles as the intake form's Continue when an unanswered preference card is open, so users don't have to hunt for it. **Where:** Blueprint Builder → Plan step; Blueprint Builder footer while intake form is open **How to test:** 1. Start a new site and complete the intake form until the Plan step appears. 2. Confirm every section in the plan shows at least one item (e.g., service names, feature bullets). 3. Open the intake form — confirm the footer button reads "Continue" and submits the form. 4. Switch to a different tab while a preference card is pending — confirm the footer reads "Continue intake (N pending)" and links back to the Intake tab. **Watch for:** Any section showing an empty items list in the plan is a sign of truncation returning.

Fixed

Quick actions show a thinking indicator while applying

Clicking a quick-action suggestion in the site editor showed no visual feedback while the AI was processing, making it appear as if the click did nothing. A thinking indicator now appears immediately so you can see the action is in progress. **Where:** Client portal → Site editor → Quick action suggestion buttons **How to test:** - Open a site in the editor and click a quick-action suggestion - Confirm a thinking/loading indicator appears while the change is being applied - Confirm the indicator clears when the refinement completes **Watch for:** No feedback after clicking a quick action; the button appearing unresponsive

Fixed

Refinement requests now correctly update all sections in single-file sites

Sites where all sections are combined into a single page file (rather than individual component files) were sometimes having refinement changes silently ignored — the AI updated a non-existent section key instead of the correct one. Refinement now correctly identifies and resolves all content sections accessed by the component before building the update. **Where:** Site editor → any refinement request on a single-file site (e.g., "change the hero headline") **How to test:** 1. Open a site that uses a monolithic single-file structure (common in V1 generations). 2. Ask the AI to change the hero headline or a specific section's content. 3. Confirm the change appears in the preview immediately and persists after refresh. **Watch for:** Refinement returning success but the preview not updating is the sign this issue has returned.

Fixed

Replacing an image now updates the live preview immediately

When replacing an image via the Image Manager, the new image now correctly updates in the live preview. Previously, the API returned success but the preview continued showing the old image until a full page reload. **Where:** Site editor → Image Manager → Replace image **How to test:** 1. Open a site in the editor and click any image to open the Image Manager. 2. Replace the image with a new one from stock or upload. 3. Confirm the new image appears immediately in the site preview without requiring a page refresh. **Watch for:** Success toast appearing but the old image remaining in the preview is the sign this regression has returned.

Fixed

Section crashes from undefined items list are now auto-repaired

Generated sites where sibling sections reused a variable name without redeclaring it (causing "items is not defined" crashes) are now automatically detected and repaired on save. New sites generated going forward include a prompt-level rule that prevents this pattern from being emitted in the first place. **Where:** Any generated site with multiple content sections **How to test:** 1. Open a site that has multiple content sections (e.g., Services, Testimonials, Gallery). 2. Confirm all sections render without blank areas or console errors. 3. Trigger a refinement on one section — confirm the page still renders correctly after saving. **Watch for:** Blank sections on a page that previously rendered fine indicate a new instance of this crash.

Fixed

Shared preview links work again

Shared preview links (sent to clients for review) were redirecting home instead of showing the site. This was caused by a data migration that temporarily cleared the active design pointer; the preview page now reads from the correct source in all states. **Where:** Shared preview URL (e.g. sent to a client via the Share button) **How to test:** - Open a site and copy its share/preview link - Open the link in a private browser window or a different browser - Confirm the site preview loads correctly **Watch for:** Preview link redirecting to the home page; blank or error screen at the shared URL

Fixed

Site creation questions now use your location and show all fields

During site creation, the preference question card now always generates dynamically with location-aware quick-fill options and enforces the full question set — previously the AI could inject a shortened 4-question card that ignored your location and skipped required fields. **Where:** Site creation flow → preference questions step **How to test:** - Start a new site and submit a business description - Confirm the preference card shows location-specific options (city/region quick-fills matching your location, not a generic US city) - Confirm the form shows all required questions (at least 8 fields, not a truncated 4-field card) **Watch for:** If quick-fill location options still show a foreign city or the form renders fewer than 8 questions, the dynamic generator path may not be running.

Fixed

Site generation no longer gets stuck after a previous failed attempt

After a generation attempt failed or was interrupted, some sites would be left in a state where starting a new generation immediately returned a "Generation is already in progress" error — even though nothing was running. This was caused by a database logic gap where a cleared status was incorrectly treated as an active session. Sites now accept new generation requests correctly after a failure. **Where:** Client portal → Site editor → Generate **How to test:** - On a site that previously had a failed generation, click Generate again - Confirm the new generation starts rather than returning an error - Confirm the generation completes normally **Watch for:** "Generation is already in progress" error on a site that has no active generation running; being unable to regenerate after a failure without manual intervention

Fixed

Site thumbnails now capture the correct active design variation

Dashboard and gallery thumbnails were sometimes capturing the wrong design variation (defaulting to the first one) instead of the one the user had selected. Screenshot capture now reads the active design index correctly across all capture paths. **Where:** Admin → Gallery thumbnails; Client dashboard → site card thumbnails **How to test:** 1. Generate a site with multiple design variations and select variation 2 or 3 as active. 2. Trigger a screenshot refresh (or wait for the cron to run). 3. Confirm the dashboard thumbnail matches the selected variation, not the first one. **Watch for:** Thumbnails showing a different design than the one marked as active.

Fixed

Stuck generation spinner clears in half the time when second design fails

When the second design variation (D2) failed to generate due to a server timeout, the "Generating…" spinner and overlay would stay on screen for up to 20 minutes. The system now detects this failure within 10 minutes and clears the spinner, showing a status message so users know D1 is ready and D2 did not complete. **Where:** Client portal → Site creation → Design gallery **How to test:** - Generate a site and wait for D1 to appear - If D2's spinner does not resolve after 10 minutes, confirm the overlay clears and shows a "Design D1 ready (D2 did not complete)" status **Watch for:** Endless "Generating…" overlay that never clears; users waiting 20+ minutes for a result that never arrives

Improved

Team and testimonial photos now show realistic, diverse people

Team member, testimonial, and founder portrait slots now use descriptive image searches instead of searching by person names — which produced random results since stock libraries can't match named individuals. Portraits now describe characteristics like role, demeanor, and setting so the matched photos look appropriate and natural. Each team member slot also receives a distinct description so you get variety rather than near-identical headshots. **Where:** Client portal → Site creation → Design gallery → Team, Testimonials, and About sections **How to test:** - Generate a site with a team or testimonials section - Confirm team member photos look like distinct, realistic individuals appropriate for the business type - Confirm testimonial portrait photos show different people rather than near-duplicate headshots **Watch for:** All team member photos looking like the same person; portrait slots showing generic stock photos unrelated to the business

Fixed

Two-line hero headlines now update correctly without leaving stale text

Sites where the hero section splits a headline into two visual lines (using a line-break character) were sometimes showing a mix of old and new text after a refinement — the second line stayed from the old headline. Refinement now handles split-headline patterns correctly. **Where:** Site editor → refinement on hero section headline **How to test:** 1. Open a site whose hero section renders the headline across two lines. 2. Ask the AI to change the headline (e.g., "update the hero headline to 'Build Faster'"). 3. Confirm both lines update correctly and no old text appears after a refresh. **Watch for:** The second line of the hero headline showing old text after the refinement is saved.

Improved

Vague site descriptions now prompt a clarifying question

When you start a site with a vague description like "I want to build a website" or "need a site", the assistant now asks a clarifying question before jumping to preference questions — so your site is built around your actual business rather than generic defaults. Industry-switching mid-conversation (e.g. going from photography to real estate) also now correctly triggers a fresh set of questions. **Where:** Site creation chat → initial pitch step **How to test:** - Start a new site and type only "I want to build a website" — expect a follow-up question asking about your business - Then try a specific pitch like "I run a photography studio in Austin" — expect the preference card to appear directly - Try switching industries mid-conversation to confirm the assistant restarts the relevant questions **Watch for:** A vague pitch that still skips straight to the preference card without asking for more detail.

Fixed

Variation chat asks better questions when preserving or rethinking a design

When choosing to modify a specific design variation or start fresh in a new direction, the AI was generating generic preference questions because it was working with outdated context from before the selection was made. It now uses the current selection when building its questions, so follow-up prompts like "what should we keep vs change" are accurately tailored to the chosen design. **Where:** Client portal → Site creation → Design gallery → Customize or Start fresh **How to test:** - Generate a site and open the design gallery - Select a variation and choose "Customize this design" or "Start fresh in a new direction" - Confirm the preference questions reference specific elements of the selected variation (e.g. "keep the dark hero?" rather than generic options) **Watch for:** Variation chat showing generic questions that don't reference the selected design; preference cards that feel disconnected from the actual variation shown

Improved

Variation chat understands your requests more accurately

The variation chat assistant now uses AI to understand what you want from a variation request, replacing a hard-coded pattern matching approach that would sometimes misread your intent and trigger the wrong action. **Where:** Client portal → Site editor → Variation chat workspace **How to test:** - Open a site with multiple design variations - Ask the variation assistant to adjust a design or describe a preference - Confirm the assistant responds with the correct action rather than redirecting unexpectedly **Watch for:** Requests being misrouted (e.g., a style preference triggering a redirect instead of a design suggestion)

Fixed

Variation chips appear immediately in the editor

Variation chips in the site editor were only shown after their preview thumbnails finished loading, causing them to pop in several seconds after the page opened. Chips now render immediately on load, and the hover popover shows a progress shimmer while the preview boots — so you always know it's loading. **Where:** Client portal → Site editor → Variation chip bar (top of editor) **How to test:** - Open a site in the editor with multiple design variations - Confirm all variation chips are visible immediately without waiting - Hover a chip and confirm a loading shimmer appears before the preview renders **Watch for:** Chips still delayed or popping in after several seconds; hover popover showing a blank white flash

Fixed

Variation screenshots now capture reliably and show full content

Screenshots for design variations were only succeeding about 4% of the time due to a timing bug where the screenshot process was terminated before it could complete. Screenshots were also showing blank sections mid-page because animated elements with hidden initial states weren't being revealed before capture. Both issues are fixed — variations now have screenshots on the first try, and every section of the page is captured. **Where:** Client portal → Site creation → Design gallery (variation thumbnails) **How to test:** - Generate a new site and go to the design gallery - Confirm all variation thumbnails show a screenshot (not a grey placeholder) - Confirm screenshots show the full page including sections below the hero **Watch for:** Most thumbnails showing grey placeholders; screenshots with blank or invisible middle sections

Fixed

Version history now saves correctly after image changes

After applying AI refinements that triggered image regeneration, the version entry was silently dropped — users would see the History tab unchanged. Version entries now save correctly for all refinement types. **Where:** Site editor → History tab (version timeline) **How to test:** - Open a site and apply an AI change that triggers image regeneration - Open the History tab and confirm a new version entry appears **Watch for:** History tab showing no new entry after an AI image change; timeline appearing stale even after multiple edits

Fixed

Version restore now visibly updates the editor

Restoring a previous version appeared to succeed (the activity feed confirmed the undo) but the editor and preview kept showing the pre-restore state — the change landed in the database but was never reflected on screen. Restoring a version now correctly updates all active editor views immediately. **Where:** Client portal → Site editor → Version history → Restore **How to test:** - Make a change to your site (e.g. a color or text refinement) - Open version history and restore a previous version - Confirm the editor preview immediately reflects the restored content — not the content from before the restore **Watch for:** Editor still showing the pre-restore version after confirming the undo; activity feed message showing a long AI-generated change summary instead of a short "Restored to version" line

Fixed

Voice refinements no longer restore cleared accent text

When you deliberately removed an accent headline (the secondary colored text that pairs with a main heading) using voice commands, subsequent voice refinements were restoring the deleted accent text instead of leaving it cleared. Cleared accents are now treated as intentional and preserved across further edits. **Where:** Client portal → Site editor → Voice mode → Headline with accent text **How to test:** - Open a site with a hero heading that has accent text - Use voice to remove or clear the accent text - Make another voice refinement to a different part of the site - Confirm the accent text does not reappear **Watch for:** Removed accent text coming back after the next voice command; accent fields being reset to their original values

Thursday, May 7, 2026

Fixed

Agency outreach pages are now mobile-friendly

The agency campaigns, prospects, and templates pages were not responsive on mobile devices — layout was overflowing and hard to use on smaller screens. All three pages now adapt correctly to mobile. **Where:** Dashboard → Agency → Campaigns / Prospects / Templates (on mobile) **How to test:** - Open the agency campaigns page on a mobile browser or using DevTools mobile emulation - Confirm the layout fits within the screen without horizontal overflow - Repeat for Prospects and Templates pages **Watch for:** Horizontal scroll bars; text or buttons cut off on mobile screens

Improved

AI now fixes duplicate popup bugs properly instead of applying workarounds

When a page component contained two independent popup or modal systems, the AI would detect only one and apply a band-aid fix (like blocking event propagation) instead of removing the duplicate at the source. The AI now recognizes files with multiple modal systems and receives full visibility into both, so it can resolve the actual duplication rather than masking it. **Where:** Client portal → Site editor → Request a fix for duplicate popups or modals **How to test:** - On a site where a popup appears twice when clicking a button, ask the AI to fix the duplicate popup - Confirm the AI removes one of the two modal systems (not adds a workaround like stopPropagation) - Also confirm that unrelated refinements (color changes, text edits) on the same file are unaffected **Watch for:** AI adding event-propagation workarounds instead of removing the duplicate modal; other refinements on the same component behaving unexpectedly

Fixed

AI refinements no longer show success when nothing actually changed

In some cases, the AI refinement would complete with a green checkmark and a success message, but the site content remained visually unchanged. The system was accepting the AI's output even when it was byte-for-byte identical to the original, creating a phantom version entry. Refinements that produce no change are now detected and returned as honest failures so users know to retry or rephrase their request. **Where:** Client portal → Site editor → Make a refinement request **How to test:** - Make a refinement request on a section - Confirm that if no visible change occurs, you see an "unable to apply" message rather than a green checkmark - Confirm successful refinements still show the green checkmark and apply correctly **Watch for:** Green success indicator with no visible change in the preview; phantom version entries in version history with no actual differences

Improved

Better stock photos: relevance filter weeds out poor matches

Stock image results are now ranked by semantic relevance before being used in generated sites. Images that don't match the intended subject (e.g. a generic office photo for a medical clinic slot) are filtered out, and role-aware skip logic avoids applying the filter to decorative background slots where any image works fine. **Where:** Site generation — images are selected automatically during generation **How to test:** - Generate a site for a specific industry (e.g. "dentist", "bakery") - Inspect the generated images — they should closely match the section's purpose - Compare with a site generated previously; new sites should have fewer obviously off-topic images **Watch for:** Generation taking noticeably longer; image slots coming back empty when they shouldn't be

Fixed

Blueprint settings no longer overwritten during chat

Server-written blueprint hints (like clone mode and classifier results) were being silently erased by a chat stream race condition, causing the AI to lose context about the site's intended style. These hints now survive the race and persist correctly. **Where:** Site creation wizard → Blueprint chat **How to test:** - Start building a site that involves cloning or a specific style intent - Continue through the blueprint chat - Confirm the AI maintains context about clone mode and initial style intent throughout the conversation **Watch for:** AI losing memory of earlier preferences mid-conversation; site plan diverging from stated intent after a few chat turns

Fixed

Chat history no longer disappears on first visit

Chat history was being wiped when a user's browser had no prior localStorage data — now it initializes correctly so conversation history is preserved from the first session. **Where:** Client portal → Site editor → Design assistant chat panel **How to test:** - Clear localStorage for the app origin - Open the site editor and start a chat - Refresh the page and confirm chat messages are still visible **Watch for:** Chat history still disappearing after a browser clear or in a fresh incognito session

Fixed

Chat suggestion chips no longer get truncated

Suggestion chips in the assistant chat were being cut off with an ellipsis due to a max-width constraint and forced truncation — now chips display their full text. **Where:** Client portal → Site editor chat → Suggestion chips; Platform assistant chat **How to test:** - Open a chat panel with suggestion chips visible - Confirm all chip text is fully readable without "..." truncation **Watch for:** Chip labels still truncated; text overflowing chip boundaries

Improved

Clearer error messages when site generation fails

When both AI generation attempts fail, the error message now includes which model failed and the specific reason for each failure, making it much easier to understand what went wrong. **Where:** Client portal → Site editor → Generate → Error state **How to test:** - Trigger a generation failure (e.g., with an invalid prompt or in a test environment) - Confirm the error message names the specific failure reason for each model tried **Watch for:** Generic "generation failed" message with no detail; error message missing information about which model was used

Improved

Complex AI refinements now consider the full page for more accurate edits

For complex edit requests (layout changes, component fixes, multi-section updates), the AI now sees the entire page — not just the targeted section — when the page is under 80K characters. This gives the AI visibility into related components, reducing cases where it applied a narrow fix to one component without accounting for how it interacts with siblings on the same page. **Where:** Client portal → Site editor → Make an edit request in the chat **How to test:** - On a site with linked components (e.g. a modal that also appears in a parent section), ask the AI to fix or update one of them - Confirm the edit correctly accounts for the related component without introducing band-aid workarounds **Watch for:** Edits that fix one component but break another; the AI using workarounds (like stopping event propagation) instead of fixing the underlying cause

Fixed

Deleted sites no longer appear in My Sites dashboard

Sites that were soft-deleted were still showing up in the client dashboard's "My Sites" list, causing confusion. Deleted sites are now properly hidden from all dashboard views. **Where:** Dashboard → My Sites **How to test:** - Delete a site from the client dashboard - Navigate back to the My Sites view - Confirm the deleted site is no longer listed **Watch for:** Deleted sites still appearing in the list; clicking a deleted site causing an error

New

Describe Your Vision when generating page variations

Generating a page variation now opens a structured three-step workspace (Intent → Vision → Inspiration → Plan) mirroring the site-builder flow. You describe what you want, the AI surfaces relevant preference questions, you optionally pick an inspiration template, then review the plan before generating — instead of typing everything into a single chat box. You can also paste a reference image URL and the new variation will pick up its visual style without copying it literally. **Where:** Site editor → Pages tab → any page → "Generate Variation" button → variation workspace panel **How to test:** - Open a site in the editor, go to Pages, click a page's variation menu and choose "Generate Variation" - Work through Intent → Vision → Inspiration → Plan tabs; confirm the chat reflects your answers - Paste a design reference URL in the Inspiration tab; generate and confirm the output style reflects it **Watch for:** Workspace not loading; plan tab staying blank; design reference URL not passing through to generation

Fixed

Design selection no longer gets stuck in a loading state

Switching between generated design variations could leave a "reconciling" overlay indefinitely with no way to proceed — now the overlay clears immediately and the selected design loads without delay. **Where:** Client portal → Site editor → Variations gallery → Choose a design **How to test:** - Open a site that has multiple generated variations - Click to switch to a different design - Confirm the overlay clears and the new design appears promptly **Watch for:** Spinner or "reconciling" overlay persisting after clicking a design; page requiring a refresh to continue

Fixed

Design variation descriptions are cleaner and more readable

AI-generated rationale text for design variations was sometimes including raw markdown, code fragments, or garbled text due to an overly broad auto-fix regex. Rationale text is now sanitized properly so descriptions are clean and readable. **Where:** Client portal → Site editor → Variations gallery → Design cards (rationale/description text) **How to test:** - Generate a site with multiple variations - View the variation cards in the gallery - Confirm each card's description text is clean plain language with no code fragments or raw markdown **Watch for:** Markdown symbols (**, ##) visible in description text; code snippets appearing in variation titles

Fixed

Form settings save correctly and no longer revert to an unexpected format

In some cases, form configuration saved through the blueprint or variation editor was being stored in an incompatible shape, causing forms to behave incorrectly or revert on the next load. The save layer now normalizes form data to the correct format on every write, regardless of how it arrived — preventing data-shape mismatches from persisting to the database. **Where:** Client portal → Site editor → Forms and contact sections **How to test:** - Edit your site's contact form or embedded form settings and save - Reload the page and confirm the form settings are preserved exactly as saved - Submit a test form entry and confirm it appears correctly in the forms inbox **Watch for:** Form configuration reverting after save; form fields appearing in the wrong order or with incorrect settings after a reload; forms inbox showing unexpected data shapes

Fixed

Forms no longer crash the site preview

When blueprint content included form data in an unexpected object shape, the site preview container would crash with an error. Forms data is now normalized to the correct array format before rendering. **Where:** Client portal → Site editor → Preview panel (sites with contact forms) **How to test:** - Open a site that has a contact form - Confirm the preview renders without a crash or blank state - Make a change to the form settings and confirm the preview still loads **Watch for:** Preview going blank; "cannot read property of undefined" errors in the console related to forms

Fixed

Forms now display correctly on shared preview links

Contact forms and other form components now render properly on public share preview links. Previously, sites previewed via a share link would show a "Form config missing" error in place of the form, even when the form was set up correctly in the editor. **Where:** Any public share link (`/preview/...`) for a site with contact forms or booking forms **How to test:** - Open a site that has a contact form in the editor - Share the preview link (Share button → copy link) - Open the share link in a new tab (or incognito window) - Confirm the form renders correctly instead of showing an error **Watch for:** "Form config missing" diagnostic label appearing on forms in the shared preview; form components rendering blank

Fixed

Gallery thumbnails refresh correctly after refinements and no longer flash

Several visual issues with the design gallery and variation chips have been fixed: thumbnails were showing stale cached previews after a refinement until the next full page reload; variation chip previews were briefly flashing to opacity when switching between them during an update; and screenshots were occasionally cropped to non-standard dimensions due to an edge-trimming artifact. All three are now resolved. **Where:** Client portal → Site editor → Variation chips and design gallery thumbnails **How to test:** - Make a refinement to your site and observe the variation chip/thumbnail — confirm it updates to show the new content without a flash or stale preview - Reload the page after a refinement and confirm the updated preview persists (not the pre-refinement version) - Generate a new site and inspect gallery thumbnails for consistent, uncropped dimensions **Watch for:** Thumbnails reverting to a pre-refinement version after page reload; chip previews briefly flashing to full opacity mid-update; gallery cards with inconsistent heights or cropped edges

Fixed

Generated sites now use correct images for each section

A cluster of bugs was causing generated sites to display wrong or mismatched images — slots were using incorrect prefixes, backfill was replacing the wrong images, and duplicate images appeared across entries. All three root causes are now fixed. **Where:** Site editor → View generated site → Image sections (hero, gallery, team, etc.) **How to test:** - Generate a new site - Review the images used in each section — hero, services, team, gallery - Confirm images are appropriate for each section and don't repeat across unrelated sections **Watch for:** Team member photos appearing in the hero; the same image used in multiple unrelated sections; placeholder gradients where real images should be

Fixed

Images in list sections now display correctly after generation

On some generated sites, images inside list-based sections (such as services, team members, or portfolio items) were showing broken image placeholders instead of the sourced photos. The image assignment was resolving correctly but being silently dropped before it could be written into the content. All list-section images now render as expected. **Where:** Client portal → Site editor → Sections with item lists (services, team, portfolio, etc.) **How to test:** - Generate a site and inspect sections that contain item lists with images - Confirm each item shows its sourced image (not a broken or empty image) - Check D2 and D3 variations as well — they were most affected **Watch for:** Broken image icons in services, team, or portfolio sections; list items showing no image while the hero image is fine

New

New AI assistant bar available outside the site editor

A persistent AI assistant bar is now available throughout the dashboard and client portal — not just inside the Mission Control panel — so users can ask questions and get help from anywhere in the product. **Where:** Dashboard (bottom bar); Client portal pages outside the editor **How to test:** - Navigate to the main dashboard - Confirm the assistant bar is visible at the bottom of the screen - Ask a question and confirm you get a helpful response - Navigate to different pages and confirm the bar stays available **Watch for:** Assistant bar not appearing on the dashboard; bar disappearing on navigation

Improved

Preview refresh button moved to main editor toolbar

The preview refresh button is now placed in the top-level editor toolbar between the share and three-dots menu, making it easier to find and click without hunting through sub-menus. **Where:** Site editor → Top toolbar **How to test:** - Open any site in the editor - Locate the refresh button in the top toolbar (between share and ⋮ menu) - Click it and confirm the preview refreshes **Watch for:** Refresh button missing from toolbar; button appearing in the wrong position

Improved

Redesigned first-time welcome screen on the site builder

New users arriving at the site builder for the first time now see a polished showcase screen instead of a blank workspace, with clear guidance on how to describe their business and what to expect. **Where:** Site builder → new site page (before entering any business description) **How to test:** - Open a new site in the builder with no existing blueprint data - Confirm the showcase/empty-state design appears with prompts to get started - Enter a business description and confirm the normal wizard flow begins **Watch for:** Showcase flashing on returning users who have existing sites; broken layout on mobile

Fixed

Refinements no longer accidentally rewrite the entire hero section

A class of bug was causing refinement requests on certain sections to trigger a full hero-section rewrite, replacing content the user hadn't asked to change. Orphaned content keys are now cleaned up properly so the AI only touches what was requested. **Where:** Client portal → Site editor → Chat → Ask to change a section **How to test:** - Open a site with an existing hero section - Ask the assistant to change a non-hero section (e.g., "update the services section") - Confirm the hero section is unchanged after the refinement **Watch for:** Hero text or images changing when only another section was edited; content from other sections leaking into the hero

Fixed

Refinements no longer crash with Unicode escape sequence errors

Certain refinements were failing with an "Expecting Unicode escape sequence" error when the AI-generated code contained special characters — the response is now sanitized before parsing so these refinements complete successfully. **Where:** Client portal → Site editor → Chat → Ask for a content change **How to test:** - Open a site and ask for a refinement that includes special characters (accented letters, emoji, symbols) - Confirm the refinement completes without an error message **Watch for:** "Expecting Unicode escape sequence" error in the chat; refinement appearing to succeed but no changes applied

Fixed

Regenerating a design no longer shows the wrong variation or gets stuck

After regenerating a site, the editor would sometimes display the wrong design variation — showing D1's content while the URL indicated D4, or getting stuck in a "Reconciling…" state. Subsequent refinements on that session could also silently overwrite the wrong variation. The active variation pointer is now kept in sync across all code paths so the editor always loads and saves to the correct design. **Where:** Client portal → Site editor → Regenerate **How to test:** - Generate a site with multiple variations, select D3 or D4, then trigger a regenerate - Confirm the editor hydrates with the correct variation content (not D1) after regeneration completes - Make a refinement and confirm it applies to the expected design **Watch for:** "Reconciling…" spinner that never resolves; editor showing the wrong design's content after regeneration; refinements being applied to D1 when D3 or D4 is selected

New

Shared site links now show rich previews in Slack, iMessage, and social media

When you share a link to a site in the editor or via the share URL, it now generates a proper Open Graph image preview so recipients see a visual card with the site's name and screenshot instead of a plain link. **Where:** Site editor → Share button → Copy link; any share URL sent via /share/[siteId]/[token] **How to test:** - Generate or open an existing site - Copy the share URL from the editor - Paste the link into Slack or iMessage - Confirm a visual card appears with the site name and screenshot **Watch for:** Blank/missing preview card; generic meta tags without the site screenshot

Fixed

Site plan tab shows correct sections and showcase preview

The blueprint wizard's Plan tab had several issues: the showcase preview was hidden, plan section items weren't appearing, and new sections were inserted in the wrong position relative to the footer. All three are now fixed. **Where:** Site creation wizard → Plan tab **How to test:** - Open the blueprint wizard for a site - Go to the Plan tab - Confirm the showcase preview is visible - Confirm all planned sections appear in the list - Add a new section and confirm it appears above the footer **Watch for:** Blank showcase area; missing sections in the plan list; sections appearing after the footer

Fixed

Site preview no longer crashes on certain page content

An unescaped regex pattern in the preview HTML generator was causing the site editor preview to crash or show a blank screen when the site content included tabs, newlines, or carriage returns. The regex is now correctly escaped. **Where:** Client portal → Site editor → Preview panel **How to test:** - Open a site that has multi-line text content (e.g., address blocks or multi-paragraph copy) - Confirm the preview renders without going blank - Try refreshing the preview and confirm it loads consistently **Watch for:** Blank preview panel; browser console errors mentioning regex or HTML parsing

New

Smarter site search on the dashboard

The dashboard site search now understands intent, not just text. Searching "food" will surface catering sites; "solar energy" finds home-services clients — even when the exact words don't appear in the site name. Exact-name results still sort first. **Where:** Dashboard → search box in the site list **How to test:** - Go to the dashboard with several sites from different industries - Search for a category (e.g. "restaurant", "legal", "fitness") and confirm relevant sites appear even if the word isn't in the site name - Search for an exact site name and confirm it still appears at the top **Watch for:** Search returning no results or unrelated results; slow response on large site lists

Fixed

Switching designs no longer shows stale content in the editor

After switching from one design variation to another, the site editor and refinement AI were sometimes reading the previous variation's files instead of the newly selected one. This could cause refinements to apply to the wrong design or show outdated content. Design switching now correctly updates all file references so the editor and AI always see the current design. **Where:** Client portal → Site creation → Design gallery → Switch between variations **How to test:** - Generate a site with at least two designs, select D1, make a refinement, then switch to D2 - Confirm the editor shows D2's content (not D1's) immediately after switching - Make a refinement on D2 and confirm it applies to D2, not to D1 **Watch for:** Editor showing a previous design's content after switching; refinements going to the wrong variation

Fixed

Variation gallery thumbnails load reliably

Thumbnails for Design 1 and Design 2 in the variation gallery were frequently failing to load due to batch errors with no retry logic — now errors are handled gracefully and thumbnails retry automatically. **Where:** Client portal → Site editor → Choose design → Variations gallery **How to test:** - Open a site with multiple generated designs - View the variations gallery - Confirm all design thumbnails load without blank placeholders **Watch for:** Blank or broken thumbnail images; gallery taking a very long time to show previews

Improved

Voice assistant stays connected when navigating between pages

The platform assistant's voice session now persists as you navigate between dashboard pages and the site editor, so you don't lose your voice connection or conversation history when switching views. **Where:** Dashboard → Platform assistant bar (bottom) → Navigate to another page **How to test:** - Start a voice session in the platform assistant bar - Navigate to a different page (e.g., from dashboard to a site editor) - Confirm the voice session remains active and conversation history is preserved **Watch for:** Voice session disconnecting on page navigation; conversation history resetting to empty

Fixed

Voice mode no longer switches languages unexpectedly

Voice interactions now stay in English rather than auto-detecting the spoken language, which could cause the assistant to transcribe and respond in Portuguese or another language mid-session. **Where:** Any voice-enabled assistant session (site editor, platform assistant bar, admin chat) **How to test:** - Start a voice session in the site editor assistant - Speak clearly in English and confirm responses stay in English - Repeat for the platform assistant bar (dashboard bottom) **Watch for:** Assistant responding in a different language despite English speech; voice transcription showing wrong language text

New

Voice mode now collects site preferences just like chat

Voice mode during site creation now goes through the same preference-card intake and plan-quality guardrails as text chat, so users get the same quality of site plan regardless of how they describe their business. **Where:** Site creation wizard → Start with voice **How to test:** - Start a new site and choose the voice intake option - Speak your business description - Confirm preference cards appear and are filled from the voice input - Confirm the generated plan matches the quality seen with chat input **Watch for:** Voice intake skipping preference cards; plan missing key sections that chat produces

Fixed

Voice mode sessions now connect reliably

Voice mode sessions were failing to start after a previous update that added a language configuration parameter the server does not accept. Sessions now connect successfully again without the unsupported parameter. **Where:** Voice-enabled assistant sessions (site editor, platform assistant bar, admin chat) **How to test:** - Click the microphone icon to start a voice session in the site editor - Confirm the session connects and the waveform animation appears - Speak a refinement request and confirm it is processed correctly **Watch for:** Voice sessions failing to start with an API error; microphone icon spinning indefinitely without connecting

Fixed

Voice refinements now update the site preview in real time

Changes made via voice commands in the site editor weren't syncing to the preview iframe — the preview remained stale until a manual refresh. Voice refinements now apply immediately to the live preview. **Where:** Client portal → Site editor → Voice mode → Speak a change **How to test:** - Open a site in the editor and activate voice mode - Ask the assistant to change a color or headline - Confirm the preview updates without needing a manual refresh **Watch for:** Preview staying unchanged after a voice refinement; needing to click refresh to see voice changes

Fixed

Wizard preference cards saved across page refreshes

Preference cards filled out during the site-building wizard were lost on page refresh, forcing users to re-enter their answers. Cards are now saved and restored automatically. **Where:** Site creation wizard → Preference card step **How to test:** - Start the site creation wizard and fill in preference cards - Refresh the page - Confirm your preference answers are still shown **Watch for:** Cards reverting to empty after a refresh; wizard restarting from scratch

Wednesday, May 6, 2026

New

Ask the in-preview chat to create pages — get a reviewable plan card and automatic link wiring

When you ask the chat panel inside the visual editor to add new pages — or to "create a page and link to it from this hero CTA" — you now see the same reviewable plan card the main assistant uses, with each new page's hero angle, sections, and CTA. Edit any field, drop pages you don't want, then click Create. If the request also implied an edit on the page you're currently viewing (e.g. wiring a button to the new page), an "Also update the current page" line shows up below the plan; after the new pages are created, the current page is refined automatically to wire the link. **Where:** Client portal → Site editor → Chat panel (right rail), on a finalized site **How to test:** - Open a finalized site in the editor - In the chat, ask "add a privacy policy and a terms of service page" — a plan card should render inline with both pages - Edit any field on the card, then click Create — both pages should land in the Pages list - For the mixed-intent flow, ask "on the homepage hero, when the user clicks the primary CTA take them to a new property detail page that I want you to create" — the plan card should show one page (`/property-detail`) plus an editable "Also update the current page" line ("Wire hero CTA to /property-detail"). Click Create — the new page should be created AND the homepage hero CTA's link should be updated to point at it **Watch for:** Plan card not appearing for "add a page" requests, pages already on the site appearing in the plan, the follow-up edit running before the new page exists, the card locking as "completed" after a partial failure

Improved

Blueprint builder chat improved on mobile

The blueprint builder chat (used during site intake) is now easier to use on mobile phones. The input area stays visible when the keyboard opens, voice input controls are properly sized, and the chat drawer scrolls more predictably on small screens. **Where:** Site builder → intake chat on a phone-sized screen **How to test:** - Open the site builder on a mobile device or mobile-sized DevTools viewport - Tap the chat input — confirm the keyboard doesn't cover the input or send button - Try voice input and confirm the button is easy to tap - Scroll up through the conversation history — confirm it scrolls smoothly **Watch for:** Input hidden behind the keyboard; voice button unresponsive; chat history not scrollable

Fixed

Blueprint chat saves your website URL when you mention it

When you type or paste your website URL during the blueprint intake chat, it is now saved to the business profile automatically. Previously the URL was recognised in conversation but not persisted, so it would be missing from the generated site's footer and SEO fields. **Where:** Site builder → intake chat → mention your existing website URL **How to test:** - Start a new site and in the intake chat type something like "my current site is https://example.com" - After the chat, open the site preview and confirm the URL appears in the footer or contact section - Check the blueprint → business fields and confirm `existing_website` is set **Watch for:** URL not persisting across a page refresh; URL appearing in the chat transcript but not the blueprint

Fixed

Border radius design tokens now apply consistently across the site

Border radius values set in the theme (e.g. rounded corners for buttons and cards) were not being forwarded through the design token pipeline, so corners would look sharp even when the theme specified rounded. This is now fixed so the visual style matches the intended design. **Where:** Generated and refined sites — button corners, card corners, and form input corners **How to test:** - Generate a site or open an existing one with rounded-corner styling - Check that buttons, cards, and input fields display the expected corner radius - Make a refinement and confirm the radius is preserved after the edit **Watch for:** Corners going sharp unexpectedly after a refinement; radius values differing between desktop and mobile preview

Fixed

Contact forms connect to the right form definition after generation

Generated sites with contact forms occasionally had a mismatch between the form component's ID and the form definition in the site blueprint, causing submissions to fail silently or the form not to render at all. IDs are now reconciled automatically during generation and extraction. **Where:** Generated sites with contact forms — visible in the live preview and after publishing **How to test:** - Generate a site for a business that would include a contact form (e.g. a plumber or consultant) - Open the site in the editor preview — the form should render with all fields - Submit a test entry and confirm it appears in the Forms inbox **Watch for:** Blank white box where the form should be; form renders but submissions don't show up

Fixed

Custom fonts now preserved reliably across site edits

Non-default fonts (anything other than Inter) that were defined in CSS cascade rules were being lost during site refinements and theme extraction. They are now correctly recovered and maintained, so a site designed with a custom heading font keeps it after AI edits. **Where:** Site editor — fonts applied during generation or manual theme edits **How to test:** - Generate a site that uses a distinctive font (e.g. a serif heading font) - Make an AI refinement (e.g. change a section's colour) and confirm the font is unchanged in the preview - Open the theme panel and confirm the correct font names appear **Watch for:** Font reverting to Inter after a refinement; font variables missing from generated CSS

Fixed

Dashboard filters now correctly categorise published sites

Published (deployed) sites now appear only in the "Published" tab — they were incorrectly showing in "Drafting" and excluded from "Published". The "Ready" tab also no longer includes published sites. **Where:** Dashboard → filter tabs (All / Drafting / Ready / Published) **How to test:** - Ensure at least one site has been published (has a live deployment URL) - Check the Published tab — the deployed site should appear there - Check Drafting and Ready tabs — the published site should not appear **Watch for:** Sites disappearing entirely from all tabs; count badges not matching actual site counts

Fixed

Dashboard restores scroll position and filters when you press Back

Pressing the browser Back button from the site editor now returns you to the exact position in the dashboard you left — same scroll position, same active filter tab. Previously the list reset to the top with all filters cleared. **Where:** Dashboard → open a site → press Back **How to test:** - On the dashboard, scroll down, apply a filter (e.g. "Drafting"), click into a site - Press the browser Back button — confirm the dashboard is scrolled to roughly the same position and the same filter is active **Watch for:** Position still resetting on mobile browsers; filter not persisting across hard refreshes

Fixed

Design variation rationale now renders rich text instead of raw markdown

The "Why this design?" rationale shown for each generated variation was displaying raw markdown syntax (asterisks, hashes) instead of formatted text. It now renders correctly with bold, headings, and bullet points. **Where:** Site builder → design variation cards → expand the rationale section **How to test:** - Generate a site and open the variation selector - Expand the rationale for any variation — confirm it shows formatted text with no visible markdown symbols - Compare the styling across multiple variations **Watch for:** Rationale still showing raw `**bold**` or `# heading` syntax; rationale section missing or collapsed permanently

Fixed

Design variation thumbnails now show the full page

Screenshots used as thumbnails for design variations were capturing only the visible viewport instead of the full page. They now scroll through and capture the entire page, giving you a more accurate preview of each variation before you choose one. **Where:** Site builder → design variation selector thumbnails; Admin → Gallery **How to test:** - Generate a site with multiple design variations - Open the variation selector and compare the thumbnail images — they should show the full page layout, not just the hero area - Switch between variations and confirm thumbnails update to reflect the selected design **Watch for:** Thumbnails still showing only the top portion; screenshots timing out on long pages; blurry or low-resolution thumbnails

Fixed

Detailed business pitches now show the full preference form, not just 3 quick cards

When a detailed business pitch is submitted (with industry, audience, and description detected), the preference step now correctly shows the longer form format with up to 6 targeted questions instead of collapsing to a 3-option card. Previously, business details extracted from the pitch were not visible to the mode selector, causing every pitch to render as a minimal card. **Where:** Client portal → Site setup chat (Turn 1 preference step) **How to test:** - Start a new site with a substantive pitch (e.g., "Bella Napoli pizzeria, Italian food, targeting families and date nights") - The preference step should show 5–6 questions in form format, not a 3-card quick-pick - A minimal pitch ("build a website") can still show the compact card format **Watch for:** Substantive pitches still showing only 3 option cards; form mode not appearing for detailed business descriptions

Fixed

Editor and deployed sites now show the same content shape

Sites that looked correct in the editor sometimes shipped to R2 with empty testimonials, missing author names, or broken quotes — even though the same site rendered correctly in the preview iframe. The cause was a parallel pair of pipelines that drifted: the editor preview ran an inline JavaScript content-aliaser that filled equivalent keys (heading↔headline, item.author↔item.name, item.quote↔item.content), but the publish-to-R2, gallery thumbnail, and SSR screenshot paths skipped that step entirely. Today we consolidated everything onto a single shared aliaser that runs on every render surface, plus added a save-time contract that catches field-level mismatches before a variation is even saved. **Where:** Affects every published site, every gallery thumbnail, every variation screenshot, and every SSR preview. The visible symptom showed up on canonical AI output where the variation extractor named fields differently than the rendered code — most often testimonials with empty quote bubbles and missing author names. **How to test:** - Open any site whose variation extraction emitted alternate field names (variations like D2 of multi-page sites are most common). The testimonial section should render real quotes and author names in BOTH the editor and the deployed page. Pre-fix, the editor showed them but the deployed page was blank. - Publish the site to R2 and inspect `<head>` of the deployed HTML — there must be a `<link href="https://fonts.googleapis.com/css2?family=...">` tag matching the fonts visible in the editor. ThemeStyles-based sites used to ship without this link entirely. - Refine a variation and ask the AI to "change body font to Inter" on a site whose theme component is named ThemeStyles. The font should actually update; pre-fix the apply path silently no-oped because it couldn't find the theme file. - Generate a new site with a V2 variation that emits `item.name` / `item.content` in testimonials. Variation save should reject it with an `item-field-missing` error rather than persisting and rendering blank cards in production. **Watch for:** - The publish path now logs a non-blocking content-shape audit per page: `[Publish] Content-shape audit flagged N issue(s) on page <slug>`. Repeated audits on the same site after publish suggest a manual blueprint edit drifted from the code shape — the site still publishes (the runtime aliaser saves the user) but the drift should be investigated. A spike in these warnings across many sites means the variation extractor regressed. - Variation save now blocks on `item-field-missing` issues. Legitimate per-item field reads on populated arrays should pass; if you see a real save get rejected, the detector's `ITEM_FIELD_ALIASES_LC` table may be missing an alias that should resolve. Add the alias in both `lib/services/content-field-aliaser.ts` AND `components/admin/playground/utils/previewHtmlGenerator.ts:8475` (the parity test asserts they stay in lockstep). - Theme/ThemeStyles file lookup is now a single shared helper. If a future generation emits the theme component under a different name (e.g. `Tokens.tsx`, `ThemeProvider.tsx`), it'll silently miss the publish-time font extraction the same way `ThemeStyles.tsx` did before. Extend `THEME_FILE_NAMES_LC` in `lib/services/theme-file-finder.ts` and the parity test will surface drift on the next publish.

Fixed

Generated sites no longer produce invisible navigation text

AI-generated sites with transparent-on-scroll headers were producing nav links in the same color as the hero background, making them invisible until the user scrolled. Navigation text and background colors are now always paired for readable contrast. **Where:** Any newly generated or regenerated site with a hero section and sticky navigation **How to test:** - Generate a new site with a hero section and a header - Confirm navigation links are readable against the hero background before scrolling - Scroll down and confirm the header background becomes solid with readable text **Watch for:** Dark-on-dark nav text at page top; nav links invisible until scroll threshold is reached

Fixed

Generated sites no longer split headlines mid-word or clip SVG graphics

Three visual bugs that appeared regularly in generated sites are now prevented at the prompt level: headlines breaking at odd points (mid-word or after a single word on a line), SVG icons and graphics being clipped by their container, and the sliding card arrows component being placed in the wrong location on the page. **Where:** Generated site previews and published sites **How to test:** - Generate a site with a hero section and a services carousel - Check that hero headlines display on one or two clean lines without odd mid-word breaks - Inspect SVG icons in feature cards — they should be fully visible, not cut off - If a carousel with navigation arrows is generated, confirm the arrows sit at the sides of the carousel, not above or below it **Watch for:** Headline wrapping still splitting oddly on narrow viewports; arrows missing entirely; SVG icons still clipping in some sections

Improved

Intake now captures phone, email, address, and social links from a pasted URL

When you paste a business URL during intake, the AI now extracts the business's phone number, email address, physical address, and social media handles from the site — in addition to the business name and description it was already capturing. This contact info flows directly into the generated site so you don't have to enter it manually. **Where:** Site builder → intake chat → paste a business URL **How to test:** - Start a new site and paste the URL of a real local business - After generation, open the site preview and check the footer and contact section for the phone, email, and address - Confirm social links (if present on the source site) appear in the footer **Watch for:** Contact info missing from the generated site even though the source site had it; placeholder social URLs (like `https://instagram.com`) appearing instead of real handles

Improved

Intake wizard shows redesign-specific questions when you paste a URL

When a business URL is detected during the intake chat, the preference card now switches into a redesign mode with a focused "content reuse" question instead of generic style chips. Scraped contact info (phone, email, address, social handles) is automatically captured into the blueprint so you don't have to retype it. The intake form also got a visual overhaul with clearer labels and a tighter layout. **Where:** Site builder → intake chat → paste or type a business URL **How to test:** - Start a new site and paste a real business URL in the chat - Confirm the preference card shows "Reuse all / Keep facts, rewrite copy / Reference only / Ignore" instead of generic style options - After generation, check that the business phone, address, and social links in the site match the scraped site - Complete the flow without a URL — confirm the original style-preference chips appear as before **Watch for:** Preference card staying in generic mode after a URL is pasted; scraped contact info not appearing in the generated site; social handles showing placeholder URLs

Improved

Mobile chat dock: result toasts and a tighter, less crowded feed

The Design Assistant's mobile chat dock now stays out of your way without losing track of what's happening. When you collapse the dock, a small result pill appears at the bottom-right showing the latest AI activity — with quick **View**, **Undo**, and dismiss controls. Successful changes auto-clear after a few seconds; failures stick around until you dismiss them. The activity feed inside the dock uses tighter spacing on mobile, and Image/Voice/Mention/Edit-brief have been collapsed into a single **+** menu next to the input so the dock has more room for messages. **Where:** Site editor on mobile → Design Assistant chat dock (the Sparkles button at the bottom) **How to test:** - Open the site editor on a phone-sized screen (or browser DevTools mobile viewport) - Open the chat dock and send a refinement (e.g. "make the hero headline bolder") - After the change applies, tap the **X** to collapse the dock — a result pill appears bottom-right with status dot, summary, View, Undo, and X - Tap **View** to re-open the dock; tap **Undo** to revert; tap **X** to dismiss - Wait ~6 seconds without interaction — successful pills auto-dismiss; failure pills do not - Inside the dock, tap the **+** above the input to reveal Attach image / Talk to AI / Mention / Edit brief **Watch for:** Pill overlapping the floating chat button; pill not updating when a new change arrives; the **+** popover not closing on outside tap; Edit brief failing to open the brief drawer

Improved

Mobile chat improvements: cleaner FAB and taller dock

The floating chat button on mobile no longer shows an issue count badge (which was alarming and unrelated to site editing). The chat dock is also slightly taller so more of the conversation is visible without scrolling. **Where:** Site editor on mobile → floating chat button (Sparkles icon at the bottom of the screen) **How to test:** - Open the site editor on a phone-sized viewport - Confirm the floating button shows only the sparkles icon with no badge or count - Tap to open the dock — confirm it has a comfortable height showing at least 3–4 message bubbles **Watch for:** Badge reappearing after a refresh; dock height reverting on orientation change

New

Post-finalization home screen highlights one clear next step

After your site is finalized, the Mission Control home screen now surfaces a single recommended action as the primary focus — front and center above the preview — instead of ten equal-weight panels competing for attention. Freshly-finalized sites get a tailored "Review your site, then publish" prompt; returning sessions show the most relevant next action based on site state. Secondary panels are grouped into collapsible sections to reduce noise. **Where:** Client portal → Home tab (after site finalization) **How to test:** - Open a site that has been recently finalized - The home screen should show one prominent action card at the top (above the site preview) - Below it, checklist and other panels should be collapsed into disclosure groups - Expanding a disclosure group should persist across page refreshes (stored per site) - Click "Why we're recommending this" on the focus card to see the reasoning **Watch for:** Focus card not appearing after finalization; sections not collapsing; disclosure state not persisting on refresh

Fixed

Site preview recovers from CDN import failures automatically

If a CDN-hosted library (e.g. Framer Motion or GSAP) failed to load on the first attempt, the site preview would stay blank or broken. The preview now retries failed imports automatically and provides clearer diagnostics when retries are exhausted. **Where:** Site editor preview panel — visible immediately after generation or when reopening a site **How to test:** - Open a site that uses animation libraries in the editor - Throttle the network to simulate a slow connection (browser DevTools → Network → Slow 3G) - Confirm the preview eventually loads even with slow or initially failed CDN requests **Watch for:** Preview still staying blank after 30+ seconds on a normal connection; error message appearing even when libraries load successfully