sbuilder-mcp 0.95.0 → 0.95.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 +10 -0
- package/CHANGELOG.vi.md +10 -0
- package/dist/domains/site/review.js +8 -2
- package/dist/tools/page.js +15 -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.95.2] - 2026-10-27
|
|
10
|
+
|
|
11
|
+
### Fixed
|
|
12
|
+
- `sb_page_open` reviews a record detail page with its page type, so record-bound tiles and the page's own relation list are no longer reported as `no_data_context` or `record_relation_orphan`.
|
|
13
|
+
|
|
14
|
+
## [0.95.1] - 2026-10-27
|
|
15
|
+
|
|
16
|
+
### Fixed
|
|
17
|
+
- `sb_review` no longer reports `empty_container` for the empty `dropdown-trigger` and `dropdown-panel` of a `select` or a `selectMode: "select"` dropdown, because the host fills them, while empty zones of a panel-mode dropdown are still reported.
|
|
18
|
+
|
|
9
19
|
## [0.95.0] - 2026-10-27
|
|
10
20
|
|
|
11
21
|
### Changed
|
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.95.2] - 2026-10-27
|
|
10
|
+
|
|
11
|
+
### Fixed
|
|
12
|
+
- `sb_page_open` review trang chi tiết record theo đúng loại trang, nên các tile gắn record và danh sách quan hệ của chính trang không còn bị báo `no_data_context` hay `record_relation_orphan`.
|
|
13
|
+
|
|
14
|
+
## [0.95.1] - 2026-10-27
|
|
15
|
+
|
|
16
|
+
### Fixed
|
|
17
|
+
- `sb_review` không còn báo `empty_container` cho `dropdown-trigger` và `dropdown-panel` rỗng của `select` hoặc dropdown `selectMode: "select"`, vì host tự điền các vùng này, còn vùng rỗng của dropdown ở chế độ panel vẫn được báo.
|
|
18
|
+
|
|
9
19
|
## [0.95.0] - 2026-10-27
|
|
10
20
|
|
|
11
21
|
### Changed
|
|
@@ -1140,8 +1140,14 @@ opts = {}) {
|
|
|
1140
1140
|
// dropdown an author MAY compose under it; with no children it still renders
|
|
1141
1141
|
// its `<input>` (render/nodes/search-input/html.go). The platform's own
|
|
1142
1142
|
// search seed ships it childless, so every seeded search page was flagged.
|
|
1143
|
-
// Not `select`: its face lives in its trigger/panel children
|
|
1144
|
-
|
|
1143
|
+
// Not `select`: its face lives in its trigger/panel children — and THOSE
|
|
1144
|
+
// zones are filled by the host (render/nodes/dropdown WriteSelect: the
|
|
1145
|
+
// panel prints one row per filterValues, the trigger the chosen one), so a
|
|
1146
|
+
// select's or a selectMode:"select" dropdown's empty zone is correct.
|
|
1147
|
+
const host = d.nodes[n.data.parent ?? '']?.data;
|
|
1148
|
+
const filledByHost = (type === 'dropdown-trigger' || type === 'dropdown-panel') &&
|
|
1149
|
+
(host?.type === 'select' || (host?.type === 'dropdown' && d.nodes[n.data.parent]?.specials?.selectMode === 'select'));
|
|
1150
|
+
const drawsOwnControl = type === 'search-input' || filledByHost;
|
|
1145
1151
|
const isReference = (n.specials ?? {})[SPEC_GLOBAL_REF] !== undefined ||
|
|
1146
1152
|
(n.specials ?? {})[SPEC_APP_BLOCK_REF] !== undefined;
|
|
1147
1153
|
if (meta.isContainer &&
|
package/dist/tools/page.js
CHANGED
|
@@ -1227,7 +1227,20 @@ export function registerPageTools(server, ctx) {
|
|
|
1227
1227
|
'Republish the page placing the form to show an edit.');
|
|
1228
1228
|
return text({ form: form_id, outline, ...(note ? { note } : {}), ...reviewField(ctx, session.current(), undefined, undefined, session.formType()) });
|
|
1229
1229
|
}
|
|
1230
|
-
const
|
|
1230
|
+
const siteId = siteFor(ctx, given);
|
|
1231
|
+
// The page TYPE says which record the page itself supplies — a `record`
|
|
1232
|
+
// detail page binds its tiles outside any list. The source read does not
|
|
1233
|
+
// carry it, and without it the open-time review flagged every tile of a
|
|
1234
|
+
// correctly rendering detail page. A failed read reviews as before.
|
|
1235
|
+
const typeRead = request({
|
|
1236
|
+
base: ctx.base,
|
|
1237
|
+
method: 'GET',
|
|
1238
|
+
path: `/api/sites/${encodeURIComponent(siteId)}/pages/${encodeURIComponent(page_id)}`,
|
|
1239
|
+
token: siteToken(ctx),
|
|
1240
|
+
fetchImpl: ctx.fetchImpl,
|
|
1241
|
+
}).then((r) => r?.page?.type, () => undefined);
|
|
1242
|
+
const outline = await session.open(siteId, page_id);
|
|
1243
|
+
const pageType = await typeRead;
|
|
1231
1244
|
// `open` joined the room on the way through — this only reports what it did.
|
|
1232
1245
|
const live = session.liveStatus();
|
|
1233
1246
|
const doc = session.current();
|
|
@@ -1267,7 +1280,7 @@ export function registerPageTools(server, ctx) {
|
|
|
1267
1280
|
...(blank_page_repair ? { blank_page_repair } : {}),
|
|
1268
1281
|
...(seeded_empty ? { seeded_empty } : {}),
|
|
1269
1282
|
...(warnings.length ? { compose_warnings: warnings } : {}),
|
|
1270
|
-
...reviewField(ctx, doc),
|
|
1283
|
+
...reviewField(ctx, doc, undefined, typeof pageType === 'string' ? pageType : undefined),
|
|
1271
1284
|
});
|
|
1272
1285
|
});
|
|
1273
1286
|
server.registerTool('sb_page_repair', {
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "sbuilder-mcp",
|
|
3
|
-
"version": "0.95.
|
|
3
|
+
"version": "0.95.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",
|