sbuilder-mcp 0.9.1 → 0.9.2
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 +8 -0
- package/CHANGELOG.vi.md +8 -0
- package/dist/tools/live.js +21 -0
- package/package.json +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -6,6 +6,14 @@ 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.9.2] - 2026-09-09
|
|
10
|
+
|
|
11
|
+
### Added
|
|
12
|
+
- sb_look now reports `stuck_note` once per process when the page pins something (`position: sticky` or `fixed`), explaining that a screenshot cannot show whether the element is actually stuck and pointing at a browser server (Playwright MCP or Chrome DevTools MCP) to scroll and check for the `wb-stuck` class.
|
|
13
|
+
|
|
14
|
+
### Internal
|
|
15
|
+
- docs/tools.md and the sbuilder-site-design skill now document which of the other MCP servers (Figma, Google Stitch, Chrome DevTools, Playwright) answers which question, alongside sb_look, covering six cases a screenshot alone cannot settle: a sticky header actually engaging, a style that "did not apply", a cart drawer's click trigger, a checkout submission, an entity template previewed with a real record, and layout stability (CLS).
|
|
16
|
+
|
|
9
17
|
## [0.9.1] - 2026-09-09
|
|
10
18
|
|
|
11
19
|
### Fixed
|
package/CHANGELOG.vi.md
CHANGED
|
@@ -6,6 +6,14 @@ 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.9.2] - 2026-09-09
|
|
10
|
+
|
|
11
|
+
### Added
|
|
12
|
+
- sb_look giờ báo cáo `stuck_note` một lần mỗi tiến trình khi trang có ghim một phần tử (`position: sticky` hoặc `fixed`), giải thích rằng một ảnh chụp màn hình không thể cho biết phần tử đó có thực sự bị "stuck" hay không, và chỉ ra một trình duyệt server (Playwright MCP hoặc Chrome DevTools MCP) để cuộn trang và kiểm tra class `wb-stuck`.
|
|
13
|
+
|
|
14
|
+
### Internal
|
|
15
|
+
- docs/tools.md và skill sbuilder-site-design giờ ghi lại server MCP nào (Figma, Google Stitch, Chrome DevTools, Playwright) trả lời câu hỏi nào, bên cạnh sb_look, bao quát sáu trường hợp mà chỉ riêng ảnh chụp màn hình không thể trả lời: một header sticky có thực sự ghim hay không, một style "không được áp dụng", nút bấm mở giỏ hàng, việc submit checkout, xem trước một template entity với dữ liệu thật, và độ ổn định bố cục (CLS).
|
|
16
|
+
|
|
9
17
|
## [0.9.1] - 2026-09-09
|
|
10
18
|
|
|
11
19
|
### Fixed
|
package/dist/tools/live.js
CHANGED
|
@@ -7,6 +7,7 @@ import { uploadMedia } from '../transport/media.js';
|
|
|
7
7
|
import { request } from '../transport/http.js';
|
|
8
8
|
import { shoot, DEFAULT_WIDTHS } from '../vision/shoot.js';
|
|
9
9
|
import { measure, MEASURE_NOTICE } from '../vision/measure.js';
|
|
10
|
+
import { isPinnedNode } from '../domains/site/sticky.js';
|
|
10
11
|
import { compactFindings } from '../domains/site/findings.js';
|
|
11
12
|
import { reviewField } from './page.js';
|
|
12
13
|
import { boxesForResponse, BOXES_FORMAT } from '../vision/boxes.js';
|
|
@@ -340,10 +341,30 @@ export function registerLiveTools(server, ctx, session) {
|
|
|
340
341
|
'("Color / Size", "Red / S") rather than the product\'s own. That is the preview, ' +
|
|
341
342
|
'not the page. Pass a published storefront URL as `url` to judge a template.')
|
|
342
343
|
: undefined;
|
|
344
|
+
// A STILL PICTURE CANNOT SHOW A PINNED ELEMENT ENGAGING, and this is the
|
|
345
|
+
// one tool a caller would expect to. `position: sticky` looks identical at
|
|
346
|
+
// rest and while stuck — that is the whole reason the platform needs a
|
|
347
|
+
// runtime class for it — so a page carrying a pinned node has a look this
|
|
348
|
+
// tool is structurally unable to photograph, however many widths it shoots.
|
|
349
|
+
//
|
|
350
|
+
// Gated on the document actually carrying one, and said once, for the same
|
|
351
|
+
// reason `preview_note` is: a directive that fires on pages it cannot
|
|
352
|
+
// apply to is noise, and noise is what makes the real notes unread.
|
|
353
|
+
const pinned = Object.values(session.current().doc.nodes).some((n) => isPinnedNode(n));
|
|
354
|
+
const stuckNote = pinned
|
|
355
|
+
? ctx.notices.once('stuck-scroll', 'This page pins something (position sticky/fixed). A screenshot is ONE scroll ' +
|
|
356
|
+
'position, so nothing here can show whether it engages or what it looks like ' +
|
|
357
|
+
'once it does — the platform styles that moment through a class a runtime island ' +
|
|
358
|
+
'toggles, "wb-stuck", and CSS alone cannot express it. To check: open the ' +
|
|
359
|
+
'PUBLISHED page in a browser server (Playwright or Chrome DevTools MCP), scroll, ' +
|
|
360
|
+
'and read classList for "wb-stuck". If it never appears, every stuck override on ' +
|
|
361
|
+
'the page is stored and never painted.')
|
|
362
|
+
: undefined;
|
|
343
363
|
return images(shots.map((s) => ({ dataBase64: s.imageBase64, mimeType: s.mimeType })), {
|
|
344
364
|
widths: shots.map((s) => s.width),
|
|
345
365
|
...(url ? { shot: url } : {}),
|
|
346
366
|
...(previewNote ? { preview_note: previewNote } : {}),
|
|
367
|
+
...(stuckNote ? { stuck_note: stuckNote } : {}),
|
|
347
368
|
...(node_id ? { framed: node_id } : {}),
|
|
348
369
|
...(with_boxes === false
|
|
349
370
|
? {}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "sbuilder-mcp",
|
|
3
|
-
"version": "0.9.
|
|
3
|
+
"version": "0.9.2",
|
|
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",
|