Live case 2 (2026.11.8): the daily limit stopped a site build after page 1, the dialog still
said "Replace your entire site?" and accepting deleted the owner's other page. The server now
reports site_build {planned, built, missing}; when pages are missing the confirm becomes
"Sitesmith built only N of M pages" with:
- "Add these pages" (default focus): each built page replaces the page at the same address,
new ones are appended, every other page is kept (PageContext mergeAiPages / addAiPages), and
the new header is repaired to link the kept pages too;
- "Replace site and delete K pages" with the names it deletes (only when K > 0);
- Cancel.
A complete site build keeps "Replace your entire site?" and now names the pages it deletes.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
- contrast repair: ContactForm labelColor / inputTextColor are repaired to a
neutral (text/bg/muted token, black, white), never the accent. Measured on
the ttm-likes eval response in Chromium: before, dark typed text, UA-grey
placeholders and an invalid border on the dark inputs; after, white text,
placeholders at 70% of it, visible border.
- a page/site build that shows none of the owner's offered uploads gets an
honest note (the brief now requires one in the hero or a feature).
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
The page root Container's default 20px padding framed every AI-built section
in a white margin (visible in every eval screenshot). New AI page/site
replaces now set padding 0 on the page root unless the model set padding
itself. Saved pages, section inserts, patches and the Container default are
unchanged, so existing sites do not move.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Eval 2026-11-01: "Build my home page following the layout of the attached
mockup" came back as scope "site", and confirming replaced every page. The
editor now decides from what the owner asked (sitesmith/replace-plan.ts):
- scope "site" is honoured (with the existing confirm) only for an explicit
whole-site request ("build me a website", "the whole site", "every page",
"a 4 page site"); otherwise the first page replaces the current page and a
note says so.
- the shared header/footer are replaced with a page only when they are still
the untouched starter ones ("MySite" + "Get Started") AND the owner says yes
in a new dialog mode ("Use the new header and footer" / "Keep my header and
footer"); customised chrome is always kept, with a note.
- the editor sends chrome_default:true so the backend can let the model
restyle the starter chrome on a page request.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>