sbuilder-mcp 0.47.2 → 0.48.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +10 -0
- package/CHANGELOG.vi.md +10 -0
- package/dist/domains/site/readiness.js +56 -2
- package/package.json +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -6,6 +6,16 @@ All notable changes to this project are documented in this file.
|
|
|
6
6
|
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/),
|
|
7
7
|
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
|
|
8
8
|
|
|
9
|
+
## [0.48.1] - 2026-09-14
|
|
10
|
+
|
|
11
|
+
### Fixed
|
|
12
|
+
- `sb_review`'s `accountPage` readiness gap no longer tells an agent to put login and register forms directly behind the guest side of the `/account` member-gate; the fix text now calls for a short sign-in prompt there that links to a separate login page, with login, register, and forgot-password built as their own pages via `sb_store action:"form"`, so a signed-out visitor gets a page to bookmark and a header gets a `/login` to link to instead of one crowded page carrying every form at once.
|
|
13
|
+
|
|
14
|
+
## [0.48.0] - 2026-09-14
|
|
15
|
+
|
|
16
|
+
### Added
|
|
17
|
+
- `sb_review` now reports an `errorPage` gap on any site with two or more pages that has no published page of type `error`, since the platform's own fallback for a mistyped URL is a bare, unstyled "404 page not found" carrying none of the site's header, footer, or way back to the shop; the gap names whether an unpublished draft already exists.
|
|
18
|
+
|
|
9
19
|
## [0.47.2] - 2026-09-14
|
|
10
20
|
|
|
11
21
|
### Fixed
|
package/CHANGELOG.vi.md
CHANGED
|
@@ -6,6 +6,16 @@ Mọi thay đổi đáng chú ý của dự án được ghi lại trong file n
|
|
|
6
6
|
Định dạng dựa trên [Keep a Changelog](https://keepachangelog.com/en/1.1.0/),
|
|
7
7
|
và dự án tuân theo [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
|
|
8
8
|
|
|
9
|
+
## [0.48.1] - 2026-09-14
|
|
10
|
+
|
|
11
|
+
### Fixed
|
|
12
|
+
- Lỗi thiếu `accountPage` mà `sb_review` báo giờ không còn bảo agent đặt trực tiếp các form đăng nhập và đăng ký phía sau phần "guests" của member-gate trên `/account`; nội dung hướng dẫn giờ yêu cầu đặt ở đó một lời nhắc đăng nhập ngắn gọn, dẫn liên kết tới một trang đăng nhập riêng, còn đăng nhập, đăng ký và quên mật khẩu được dựng thành các trang riêng qua `sb_store action:"form"`, nhờ đó khách chưa đăng nhập có một trang để lưu lại và header có `/login` để liên kết tới, thay vì dồn hết mọi form vào một trang duy nhất.
|
|
13
|
+
|
|
14
|
+
## [0.48.0] - 2026-09-14
|
|
15
|
+
|
|
16
|
+
### Added
|
|
17
|
+
- `sb_review` giờ báo lỗi thiếu `errorPage` trên mọi site có từ hai trang trở lên mà chưa có trang loại `error` được publish, vì cách nền tảng tự xử lý khi gặp URL gõ sai chỉ là một trang "404 page not found" trần trụi, không kiểu dáng, không mang theo header, footer hay đường quay lại cửa hàng của site; lỗi này nêu rõ liệu đã có sẵn một bản nháp chưa publish hay chưa.
|
|
18
|
+
|
|
9
19
|
## [0.47.2] - 2026-09-14
|
|
10
20
|
|
|
11
21
|
### Fixed
|
|
@@ -96,6 +96,42 @@ export function readinessGaps(input) {
|
|
|
96
96
|
'globalRef instead of a copy, and one edit reaches every page.',
|
|
97
97
|
});
|
|
98
98
|
}
|
|
99
|
+
// A MISTYPED URL ANSWERS IN GO, NOT IN THE SHOP'S VOICE.
|
|
100
|
+
//
|
|
101
|
+
// storefront/errorpage.go: with no PUBLISHED page of type `error`, notFound
|
|
102
|
+
// falls through to http.NotFound — the bare "404 page not found" in plain
|
|
103
|
+
// text. No header, no footer, no way back to the shop, and nothing that looks
|
|
104
|
+
// like the site the shopper was just in.
|
|
105
|
+
//
|
|
106
|
+
// Unlike the completion page, which backstops itself with a built-in receipt
|
|
107
|
+
// (measured 200 on a live store that had none), this fallback carries none of
|
|
108
|
+
// the site. And unlike a dead link, nothing reports it: the only person who
|
|
109
|
+
// sees it is a visitor who already took a wrong turn and now has no way back.
|
|
110
|
+
//
|
|
111
|
+
// Asked of EVERY site, not only a store, and so placed here with siteChrome
|
|
112
|
+
// rather than below the gate — a mistyped URL is not a commerce question.
|
|
113
|
+
//
|
|
114
|
+
// TWO PAGES IS THE THRESHOLD, the same one siteChrome uses and for a related
|
|
115
|
+
// reason: a one-page site has no second address to mistype, no menu to follow
|
|
116
|
+
// a stale link out of, and nothing to put in a header that would make a 404
|
|
117
|
+
// look like the site. Below it this would be a nag at a brochure — which the
|
|
118
|
+
// silence contract in readiness.test.ts names outright.
|
|
119
|
+
if (pages && pages.length >= 2 && !published(pages, 'error')) {
|
|
120
|
+
const draft = drafted(pages, 'error');
|
|
121
|
+
gaps.push({
|
|
122
|
+
id: 'errorPage',
|
|
123
|
+
draft,
|
|
124
|
+
problem: 'A URL that does not exist answers with the platform\'s own bare "404 page not found" ' +
|
|
125
|
+
'in plain text — no header, no footer, no way back to the shop. A shopper who follows ' +
|
|
126
|
+
'a stale link or mistypes an address lands on a blank page that does not look like ' +
|
|
127
|
+
'this site at all.',
|
|
128
|
+
fix: draft
|
|
129
|
+
? 'Publish the error page that already exists.'
|
|
130
|
+
: 'Create a page of type "error" and publish it. It has no address of its own — the ' +
|
|
131
|
+
'storefront serves it as the BODY of a 404 — so give it the site\'s header and ' +
|
|
132
|
+
'footer and a link back to the home page.',
|
|
133
|
+
});
|
|
134
|
+
}
|
|
99
135
|
if (!isStore(input))
|
|
100
136
|
return gaps;
|
|
101
137
|
if (pages && !published(pages, 'checkout')) {
|
|
@@ -185,6 +221,18 @@ export function readinessGaps(input) {
|
|
|
185
221
|
// between the store and a PAID ORDER: a shop with no account page still takes
|
|
186
222
|
// money. They stand between it and a finished website, which is the next
|
|
187
223
|
// question a merchant asks.
|
|
224
|
+
//
|
|
225
|
+
// WHAT /account OWES A SIGNED-OUT VISITOR IS A WAY IN, NOT EVERY FORM AT ONCE.
|
|
226
|
+
// This fix used to read "put login and register forms behind a member-gate
|
|
227
|
+
// with audience guests", and agents did exactly that — one page carrying the
|
|
228
|
+
// profile, the login form and the register form, with nothing for a header to
|
|
229
|
+
// link to and no /login to bookmark. Reported from a built store as the pages
|
|
230
|
+
// coming out "ngáo": the rule was the cause, not the agent.
|
|
231
|
+
//
|
|
232
|
+
// The gate itself is load-bearing and stays: membersOnlyRedirectTarget sends
|
|
233
|
+
// every gated visitor to /account (and to "/" when there is none), so that
|
|
234
|
+
// page MUST answer a signed-out visitor with something. A prompt and a link
|
|
235
|
+
// is that something.
|
|
188
236
|
for (const [type, id, what, fix] of [
|
|
189
237
|
[
|
|
190
238
|
'account',
|
|
@@ -192,8 +240,14 @@ export function readinessGaps(input) {
|
|
|
192
240
|
'/account 404s. A shopper has no way to see their orders, addresses or saved items, and ' +
|
|
193
241
|
'the account elements (account-info, address-book, wishlist-list, points-card) have ' +
|
|
194
242
|
'nowhere to live.',
|
|
195
|
-
'Create a page of type "account" and publish it
|
|
196
|
-
'
|
|
243
|
+
'Create a page of type "account" and publish it: the profile behind a member-gate with ' +
|
|
244
|
+
'audience "members", and behind audience "guests" a short sign-in prompt LINKING to the ' +
|
|
245
|
+
'login page — not the forms themselves. Login, register and forgot-password are three ' +
|
|
246
|
+
'ordinary pages of type "page", each seeded by sb_store action:"form" with template ' +
|
|
247
|
+
'"login", "register" or "forgot". Putting all three inside /account hands a shopper one ' +
|
|
248
|
+
'crowded page and hands a header nothing to link to: a popup is a fine way to SIGN IN, ' +
|
|
249
|
+
'but only a page has an address, and /account is the address this platform already ' +
|
|
250
|
+
'sends every gated visitor to.',
|
|
197
251
|
],
|
|
198
252
|
[
|
|
199
253
|
'search',
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "sbuilder-mcp",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.48.1",
|
|
4
4
|
"description": "MCP server that designs and operates a Store Builder site — pages, data, theme and publish — through the platform's own API and live-edit protocol.",
|
|
5
5
|
"mcpName": "io.github.vuluu2k/sbuilder-mcp",
|
|
6
6
|
"type": "module",
|