Releases: vuluu2k/sbuilder-mcp
Releases · vuluu2k/sbuilder-mcp
Release list
v0.8.0
[0.8.0] - 2026-09-08
Added
- sb_add's
specargument now takesresponsiveon any node, seeding per-breakpoint style and config overrides at creation time instead of requiring a follow-up sb_set for every responsive value; it merges over the element's own seeded responsive defaults per namespace, so seeding a mobile style does not drop the element's own mobile config. - sb_import takes max_nodes (default 300), a single bound on the whole import; it replaces the old per-section cap, which silently became the real limit on a page whose body has one top-level child, and the amount skipped is now reported on a real run too, not only a dry one.
- sb_import now preserves the source's layout: a container that actually lays its children out with flex or grid becomes a real row that stacks at mobile instead of every section flattening into one vertical column.
Fixed
- sb_import now captures text from any element that holds it, not only
<p>and<blockquote>, since most of the web does not use paragraph tags; a table-layout page or a utility-CSS page previously imported with none of its text at all. - sb_import's empty-result fallback now retries against the page's
<main>whenever the sections it found produced no content, instead of only when it found no candidate sections in the first place. - sb_import now keeps an unpainted content link instead of dropping it, capturing it as a flat link-styled button rather than only capturing links that already look like a call to action; a painted button still requires a filled background or a border with actual width, so a Tailwind page's zero-width reset borders are no longer mistaken for one.
- sb_import no longer imports the source page's own page-level header and footer, since the target page already carries its own as shared globals; a
<header>nested inside a section (a hero) is still kept.
v0.7.2
[0.7.2] - 2026-09-08
Fixed
- sb_import no longer classifies a short block-level link as a button; it previously stopped at "not inline", so a documentation sidebar's list of navigation links came back as dozens of buttons. A real call to action must now be painted with a fill or a border, and a border only counts when it has width, since a Tailwind-built page sets
border-style: solid; border-width: 0on every element. - sb_import's page capture no longer waits a flat 600ms before reading the page; it now reuses sb_look's own settle check, which waits until the page actually stops changing rather than a fixed delay that is too long for a static page and too short for one that builds itself with scripts.
v0.7.1
[0.7.1] - 2026-09-08
Added
- sb_import takes max_images (default 24), bounding how many images it uploads from the imported page, since every image is a real upload and a page shape like a sponsors wall can carry dozens of them in a single tool call.
Fixed
- sb_import no longer duplicates content that sits inside a nested section; it previously matched every
<section>on the page, so an outer band and the bands nested inside it were both captured and the inner content came back twice. Only the innermost matching section is now kept, since the outermost is a candidate too and keeping it would reduce the whole page to one band.
v0.7.0
[0.7.0] - 2026-09-08
Added
- sb_import reads any public URL and adds its structure and content to the open page as real elements — section, heading, text, image, button, list — dressed in that page's own tokens (ink and weight off the first heading, colour and size off the first body line, fill and radius off the first non-transparent button) instead of embedding the source's raw markup. An image is bounded in both axes rather than only capped in width, since an SVG has no intrinsic pixel size and would otherwise stretch a section into thousands of pixels of empty space; each image is uploaded into the site's own media library, falling back to the original URL on a failed upload, and a failure is reported grouped and counted by reason rather than as a bare count. dry_run (the default) returns what was found before anything is added.
- npm run codegen:check runs the catalog generator against a committed platform ref and writes nothing, exiting 1 and naming every file that would change, so a stale catalog is caught before a tool starts describing an element or operation the platform no longer has.
Changed
- The element and API catalog is regenerated: adds the bundle-items element and the kind, bundlePricing, bundleValue and bundleItems fields on a product, plus a set of relation-slot operations and a storefront-string levelling command; sb_api_find's token budget ceiling is raised to 3,500 to hold the larger product call sheet.
Fixed
- sb_look can now photograph a node whose box sits below roughly the first 900px of the page; a clip request previously ran against the viewport alone and failed with Playwright's "Clipped area is either empty or outside the resulting image" for anything further down, and it now captures the full page first so the clip lines up regardless of where the node sits.
v0.6.0
[0.6.0] - 2026-09-08
Added
- sb_store now takes action:"form" alongside action:"checkout", seeding any of the platform's 17 form templates (contact, subscribe, order, address, consult, booking, stay, feedback, event, quote, apply, and the five auth forms login, register, forgot, verify, reset) with their own field document, instead of the checkout order form being the only one this server could build; it creates the form, PUTs it back whole (a bare create is otherwise silently renamed and turned custom), then saves the template's field document, deleting the form again if either write fails. It makes no page, since where a login form belongs is a design decision — place it with sb_add and point specials.formId at the id returned.
Fixed
- sb_review no longer reports empty_container on a global section's or app block's reference node, since a page stores its shared header or footer as an empty node stamped globalRef or appBlockRef that the platform composes the master into on read; the fix the finding used to name, adding something inside it, was decomposed away by the very next save.
v0.5.0
[0.5.0] - 2026-09-08
Added
- sb_review reports default_seed_copy when a satellite's empty state still carries the platform's own English seed text, such as a repeater's empty state saying "No products yet", which previously matched no rule and reviewed clean.
- sb_review reports form_fields_flush when a form, form-segment or form-step-nav stacks its fields with no gap between them, so each label reads as belonging to the control above it.
- The install CLI accepts --site-name, matching the flag the platform's own Agent app install line already appends; it rides in as SB_SITE_NAME alongside the site id, and sb_connect reports it back so a session can display the store's name instead of its id.
- A dry run of the install CLI now reports its own preview outcome and exit code instead of reusing the failure marker and exit code of a real install.
- sb_api_call now falls back {siteId} and {siteID} path parameters to SB_SITE across all 289 operations that name the site, matching the fallback every other tool already applies through siteFor(); an explicit argument still wins.
Fixed
- sb_set's state parameter now writes to the location the platform's cascade actually reads: node.states[state] at base, node.responsive[breakpoint].states[state] per breakpoint. Previously it wrote to a path nothing reads, and base:true combined with state:"hover" wrote the hover value straight into the plain style, leaving a node permanently styled as if hovered with no hover state at all.
- sb_set now refuses a state argument on specials instead of silently dropping it, since content and identity do not vary by interaction state.
- sb_review now walks into satellite nodes (a repeater's empty state, a variant option's skin, a quantity stepper's buttons, a menu or tab item's skin), so findings inside them are reported instead of being invisible to every check.
- sb_review and sb_set now report a site-wide edit as such: a change to a node inside a global section's interior, or inside a site overlay like the cart drawer, is flagged rather than reading as an ordinary page-local edit.
- sb_look now opens a closed overlay (such as the cart drawer) before measuring it, so a node_id resolving inside one can be photographed at all instead of failing with a clipping error that named neither the overlay nor the reason.
- sb_look's preview_note no longer claims the draft preview renders every repeater's empty state; the draft preview threads real store data just like a published page, and the note now describes the real caveat, which is that an entity template previews with nothing bound.
v0.4.4
[0.4.4] - 2026-09-08
Added
- sb_api_find's call sheet now returns body_shape for 158 of the platform's 212 write operations, read directly off the Go handler that decodes each body instead of the 46 swagger.json describes, and expands one level of a nested struct (such as a product's variants, where the price actually lives) rather than stopping at the type name.
- sb_store runs the four fixed-order writes a working checkout needs — create an order form, save it back whole with the cart as its source, fill in the store's real payment methods and delivery options, then create and publish a checkout-type page — since building them by hand and missing one step ships a Checkout button that answers 404. dry_run (the default) returns the ordered plan and the payment_methods/delivery_options the form will carry; executing returns form_id, page_id, slug and published.
- sb_undo restores what a PUT made through sb_api_call just replaced, since the platform has no page history, versions or restore for pages, forms or settings; sb_api_call now reads a PUT's target through the matching GET before writing so there is something to put back.
Fixed
- sb_review's checkoutPage gap now points to sb_store's checkout action instead of a fix that only creates a checkout-type page, which has no order form bound to the cart and takes no orders.
- Redacting a request preview (used by sb_api_call and sb_undo) now matches platform-sourced credential field names such as accessKey, apiKey, clientSecret, hashSecret, webhookSecret, orderToken and signature, not just an exact "secret", since a body sb_undo echoes back comes from the platform's own vocabulary rather than a caller's.
v0.4.3
[0.4.3] - 2026-09-08
Changed
- sb_look and every other save no longer write an unchanged document back to the platform, since a vision loop looks far more often than it edits and a no-op save still costs a round trip and bumps the revision of every shared master the page carries; a save now returns early when the document's revision matches the one last stored.
- sb_look skips its lazy-image scroll walk on a page with nothing marked loading="lazy", instead of always paying the ~60ms scroll regardless of whether the page has anything below the fold to settle.
- The API catalog is regenerated: 481 operations (up from 456), recovering 25 merchant routes that were previously documented only in route-map comments and unreachable through sb_api_call, including article and blog-category detail routes, a course's sections/lessons/product-links/enrolments, an integration, and site templates.
- A handful of order-receipt trait labels (receipt_number_label, receipt_placed_label, receipt_status_label, receipt_items_label, receipt_total_label, receipt_due_label, receipt_unavailable_text) are shortened, e.g. "Order number label" to "Order number".
v0.4.2
[0.4.2] - 2026-09-08
Changed
- sb_look now waits for the page to stop changing (a MutationObserver, 250 ms quiet / 2000 ms cap) instead of waiting on a networkidle timeout that a storefront's polling cart island and session checks could never satisfy, cutting a typical shot from ~3.2s to under 1s while still photographing a page that never settles rather than holding the shot forever.
v0.4.1
[0.4.1] - 2026-09-08
Fixed
- sb_review now reports findings inside the cart drawer and other site overlays, tagged with overlay: true, instead of silently skipping them on the belief that an overlay is not the page's to fix; the review notice explains that an overlay:true finding is fixed the same way but is site-wide, so it only needs fixing once.
- sb_api_call's path_params now matches a parameter name case-insensitively as a fallback, so a call using the common siteId spelling no longer fails against the 8 operations that spell it siteID; an exact match still wins and a genuinely missing parameter is still refused.