Releases: vuluu2k/webcake-storefront-mcp
Releases · vuluu2k/webcake-storefront-mcp
Release list
v1.31.9
[1.31.9] - 2026-09-07
Added
- Pages created by
create_page,build_page, andcommit_page_draftare now stamped withby_ai: "mcp"(persisted to the backendpages.by_aicolumn) so the builder can flag AI-authored pages.
Changed
create_page,build_page,start_page_draft, andcommit_page_draftnow check for an existing page before creating one: a duplicatemain(homepage),error, ormaintainpage, or aslugalready used on the site, is refused with the conflictingexisting_pageid so you edit that page in place (replace_page_source/add_section/update_page) instead of creating a shadow duplicate;dry_runcalls reportblocked: truewith the same conflict detail. Onlycustompages remain unlimited.get_build_guidedocuments the one-page-per-site rule for themain,error, andmaintainpage types, and clarifies thatstore,member,blog, andcustompages are instead kept unique byslug.
v1.31.8
[1.31.8] - 2026-06-29
Fixed
- Elements placed by
new_section,new_row, andbuild_pagethat fill their grid cell (text, image, container, columns, repeaters) now receiveconstraintX: ["left","right"](stretch) instead of["centerLeft"](center), so sibling elements line up edge-to-edge rather than snapping to content width and floating (the "cắn left-top / không thẳng hàng" alignment bug). buildElementnow backfillsopts.configandopts.styleintoruntimefor factories that silently ignored them (e.g.createContainer,createMenu), fixing cases whereconfig.isHiddenwas dropped and a mobile-only nav bar would remain visible on desktop.
Changed
- The
buttonfactory now defaults to content-width (widthUnit: "auto") with 28 px horizontal padding and a centred label instead of a fixed 142 px wide bar, so standalone CTAs size to their text rather than stretching edge-to-edge. - The
submit-buttonfactory now defaults to 48 px height with 24 px horizontal padding and a centred label so form submit buttons no longer render as unstyled slivers. build_page,new_section, andnew_rownow auto-scale large fonts (fontSize ≥ 22 px, approximately 0.86× on tablet and 0.72× on mobile) and tall images (height > 320 px) on smaller breakpoints by default; an explicitresponsivediff on a node still wins.new_element(andbuildElementinternally) now acceptsopts.align("left"|"center"|"right"|"fill") on any element type;"fill"setsconstraintX: ["left","right"]pluswidthUnit: "%"/relWidth: 100so the element spans its column.get_build_guideis updated with: the grid-cell alignment rule (stretch vs. center, when each applies), button sizing andopts.alignusage, auto-responsive scaling defaults, and a verified two-navisHidden-swap pattern for building a reliable mobile menubar.
v1.31.7
[1.31.7] - 2026-06-26
Fixed
build_page,create_page,update_page, andcommit_page_draftnow strip a leading/fromslugbefore saving; a slug like/cartwould previously 404 on the storefront because it matches the bare path segment only.- Sections built by
new_sectionandbuild_pagenow apply vertical padding via top and bottom spacer grid rows inruntime.configinstead of CSSpaddingTop/paddingBottom, which the storefront renderer ignores on sections. - Child elements placed by
new_sectionandnew_rownow default towidthUnit:"%"andrelWidth:100in theirruntime.config, eliminating the invalidwidth: %;that caused elements to render with zero width. create_productnow expands attribute axes into a cartesian product of variations, each carrying the correctfieldsentries with uniqueids, so the storefront variation selector has values to display;product_attributesnow also includes anidand akeywordlist (withkeyValueandvalueper entry) as required by the selector.
v1.31.6
[1.31.6] - 2026-06-26
Removed
scaffold_store_pages,scaffold_global_sections, andscaffold_popuptools are removed; pages are now composed free-form from elements usingnew_section,new_element,new_row, andbuild_page.
Added
- New
get_page_schematool returns the authoritative JSON Schema (Draft 2020-12) for the CSS-grid page source, documenting the structural contract for every page node. - Six new page-draft tools (
start_page_draft,add_draft_section,get_page_draft,list_page_drafts,commit_page_draft,clear_page_draft) enable building large pages section-by-section into a local cache (Redis whenREDIS_URLorWEBCAKE_REDIS_URLis set, otherwise in-memory) and committing them to the backend incrementally and resumably, avoiding 15-second request timeouts.
Changed
create_sitenow auto-clears seeded sample products, non-default categories, and articles on site creation so the new site starts empty and on-theme; opt out withkeep_seed:true, and the result reportsseed_clearedcounts.get_build_guideis rewritten with a "DESIGN SYSTEM" section covering palette, type-scale, 8px spacing grid, contrast rules (CTA buttons must usevar(--color_24)with a white label;var(--color_20)is too pale for white text on any theme), hero image rules (build a real full-width image element, not a CSSbackgroundshorthand), and product-image requirements (product-level images, not variation-only).new_element,new_section,new_row, andbuild_pagenow accept aresponsiveoption with sparse per-breakpointstyle/configoverrides that cascade waterfall (bp1→bp4) so each smaller breakpoint inherits the resolved larger one and applies only its own diff.
Fixed
publish_sitenow sends all saved pages (withsource,id,type,slug,is_homepage, andsettings) and achangesmap to the publish endpoint, so the storefront actually goes live instead of remaining on the "no interface" error page.publish_sitenow includes the site's livedomainin the publish request body, preventing published sites from expiring on the preview URL instead of resolving to the live domain.- The page schema used by
validate_pageandget_page_schemanow acceptsruntime.specialsand relaxesheightUnitvalidation to match the actual factory node shape.
v1.31.5
[1.31.5] - 2026-06-26
Added
- Column definitions accepted by
create_collectionandupdate_collection_columnsnow support five new optional fields:note(help text for the column),default(default value),reference(referencedtable_nameor system entity forreference-type columns),reference_type("system"or"collection"), anddate_default_type("empty","added", or"specific"fordate/naive_datetimecolumns).
Fixed
- The
typefield in column definitions forcreate_collectionandupdate_collection_columnsnow enumerates all 20 editor-supported types (text,rich_text,url,integer,float,decimal,boolean,reference,color,image,media_gallery,video,audio,document,date,naive_datetime,time,address,object,array) instead of the outdated 9-type subset that included backend-internal aliases (string,binary_id,map). - The MCP server now reports its version from
package.jsonat runtime instead of the stale hardcoded"1.0.0".
v1.31.4
[1.31.4] - 2026-06-26
Added
- The guide returned by
get_http_functionandget_site_custom_codenow includes a verified end-to-end "Custom data TABLES (collections)" section documenting the complete workflow: create a table and its columns withcreate_collectionandupdate_collection_columns, read rows directly withquery_collection_records, and write rows from an HTTP function via the webcake-data SDK (db.model(table).create,updateOne,deleteMany,find); the section notes that record writes have no direct dashboard API and must be deployed withupdate_http_functionthen invoked withrun_function, and thatdebug_functionrequires the function to be deployed first.
v1.31.3
[1.31.3] - 2026-06-26
Added
- New
update_collection_columnstool reads the current collection schema and PATCHes it with the system columns plus the provided custom columns, enabling safe column management without accidentally dropping existing fields. - New
delete_collectiontool permanently removes a collection (table) and all its records bycollection_id.
Changed
create_collectionnow accepts an optionaltable_name(snake_case, distinct from the displayname) and acolumnsarray of custom field definitions; it creates the bare table first, then applies columns in a second PATCH call, matching the verified backend flow.create_collectiondescription now explicitly documents that record writes must go through an HTTP function using the webcake-data SDK (db.model(table).create({...})), since no direct dashboard record-insert API exists;get_http_functionis surfaced as the guide reference.
Fixed
create_collectionpreviously sent theschemaarray in the create body, which caused a 500 error from the backend; custom columns are now added via a follow-upPATCHafter the table is created.
Removed
insert_collection_record,update_collection_record, anddelete_collection_recordare removed because the dashboard record-write endpoint returns 422 unconditionally on every call regardless of payload; record writes must be performed via an HTTP function using the webcake-data SDK.
v1.31.2
[1.31.2] - 2026-06-26
Changed
- The
HTTP_FUNCTION_GUIDEembedded inget_http_functionandget_site_custom_codenow includes a "Common patterns" section with battle-tested production recipes: find-or-create, upsert with{ new: true }read-back, count-then-denormalize, multi-table ordered writes with an audit/history row, soft delete via status field, reference-id helpers (toId/toNumber), numeric status enums, and the auth-guard +try/catch { mess }return convention. - The
@webcake/*module section in the same guide now explicitly notes that these modules run inside the function sandbox (authenticated viaglobal.token) and can therefore reach/cms_functionendpoints that the dashboard JWT cannot;@webcake/customerdocumentation now lists the returned object's fields (id,name,avatar,email,phone_number), the always-check-customer?.idrule, and a typical lookup-by-anything helper (code → phone → email → id); the@webcake/promotionaddBonusentry now includes a concrete example call.
v1.31.1
[1.31.1] - 2026-06-26
Fixed
- The
webcake-dataSDK reference embedded inget_http_functionandget_site_custom_codenow documents the correct Mongoose-document API: filters are plain MongoDB-style objects (e.g.{ status: { $in: [0, 1, 2] } }) instead of the.where().gte()QueryBuilder pattern; chains are directly awaitable with no.exec();.select()takes an array of field names;.populate({ field, select:[...] })resolves a reference field to its related object; the write API documentsfindOneAndUpdate(filter, update, { new: true }),updateOne,updateMany, anddeleteMany; and the example is rewritten to a real production pattern withdband models declared at module top,request.customer?.idfor auth,request.paramsfor inputs, and{ mess: "OK", ...data }as the return convention.
v1.31.0
[1.31.0] - 2026-06-26
Added
- New
create_collectiontool creates a custom data table by accepting anameand aschemaarray of field definitions (with types such asstring,integer,naive_datetime,map, etc.); the backend automatically addsid,inserted_at, andupdated_at. - New
insert_collection_recordtool inserts a record into a collection by accepting atable_nameand arecordfield-value object matching the table schema. - New
update_collection_recordtool updates a collection record byrecord_id, accepting only the changed fields inrecord. - New
delete_collection_recordtool deletes a collection record byrecord_id.
Changed
query_collection_recordsnow accepts an optionalwherefilter object (e.g.{ status: "active" }) and anorder_byfield name, enabling server-side filtering and sorting of collection data.
Fixed
query_collection_recordspreviously returned 401 on every call because the collection records endpoint requires anx-cms-api-keyheader in addition to the standard dashboard JWT; the API client now fetches and caches that key automatically and sends it with all collection-data requests.