webcake-storefront-mcp 1.1.3 → 1.1.4
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/dist/changelog.json +44 -0
- package/dist/web-guide.js +68 -1
- package/package.json +2 -2
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
[
|
|
2
|
+
{
|
|
3
|
+
"v": "1.1.4",
|
|
4
|
+
"d": "23/06/2026",
|
|
5
|
+
"type": "Added",
|
|
6
|
+
"en": "The remote landing page served by the serve command now includes a \"What's new\" section that renders a version timeline loaded from a build-time…",
|
|
7
|
+
"vi": "Trang landing của lệnh serve nay có thêm mục \"Có gì mới\" hiển thị timeline lịch sử phiên bản được tải từ file changelog.json sinh ra lúc build (từ…"
|
|
8
|
+
},
|
|
9
|
+
{
|
|
10
|
+
"v": "1.1.3",
|
|
11
|
+
"d": "23/06/2026",
|
|
12
|
+
"type": "Changed",
|
|
13
|
+
"en": "The install command's interactive wizard now runs a three-step flow: environment selection (prod / staging / local), authentication, then IDE…",
|
|
14
|
+
"vi": "Trình hướng dẫn tương tác của lệnh install nay chạy theo 3 bước: chọn môi trường (prod / staging / local), xác thực, rồi cấu hình IDE."
|
|
15
|
+
},
|
|
16
|
+
{
|
|
17
|
+
"v": "1.1.2",
|
|
18
|
+
"d": "23/06/2026",
|
|
19
|
+
"type": "Fixed",
|
|
20
|
+
"en": "The server no longer crashes at startup in container environments built with npm ci --ignore-scripts; the better-sqlite3 native SQLite module has…",
|
|
21
|
+
"vi": "Server không còn bị crash khi khởi động trong môi trường container được build bằng npm ci --ignore-scripts; module SQLite native better-sqlite3 đã…"
|
|
22
|
+
},
|
|
23
|
+
{
|
|
24
|
+
"v": "1.1.1",
|
|
25
|
+
"d": "23/06/2026",
|
|
26
|
+
"type": "Added",
|
|
27
|
+
"en": "The serve command's OAuth token store now optionally uses Postgres (via DATABASE_URL) for durable persistence across restarts and shared state…",
|
|
28
|
+
"vi": "Kho lưu trữ token OAuth của lệnh serve nay hỗ trợ tùy chọn sử dụng Postgres (qua DATABASE_URL) để lưu token bền vững qua các lần khởi động lại và…"
|
|
29
|
+
},
|
|
30
|
+
{
|
|
31
|
+
"v": "1.1.0",
|
|
32
|
+
"d": "23/06/2026",
|
|
33
|
+
"type": "Added",
|
|
34
|
+
"en": "The serve (remote Streamable-HTTP) mode now embeds a full OAuth 2.1 Authorization Server at /authorize, /token, /revoke, /register, and…",
|
|
35
|
+
"vi": "Chế độ serve (remote Streamable-HTTP) nay tích hợp sẵn một Authorization Server OAuth 2.1 đầy đủ tại các endpoint /authorize, /token, /revoke,…"
|
|
36
|
+
},
|
|
37
|
+
{
|
|
38
|
+
"v": "1.0.3",
|
|
39
|
+
"d": "23/06/2026",
|
|
40
|
+
"type": "Added",
|
|
41
|
+
"en": "MIT license (Copyright vuluu2k) added to the package.",
|
|
42
|
+
"vi": "Thêm giấy phép MIT (Copyright vuluu2k) vào package."
|
|
43
|
+
}
|
|
44
|
+
]
|
package/dist/web-guide.js
CHANGED
|
@@ -14,6 +14,7 @@
|
|
|
14
14
|
*
|
|
15
15
|
* Self-contained (inline CSS + JS, no external fonts/trackers) so it loads instantly.
|
|
16
16
|
*/
|
|
17
|
+
import { readFileSync } from "node:fs";
|
|
17
18
|
// The SPA page (on the builder app) that shows the user their personal remote
|
|
18
19
|
// connector link with login already built in — see builderx_spa McpRemoteStore.vue
|
|
19
20
|
// (/mcp-remote-store). The raw MCP endpoint itself is {ENDPOINT} = <origin>/mcp.
|
|
@@ -281,6 +282,9 @@ const T = {
|
|
|
281
282
|
promptSub: "Bạn có thể nói tự nhiên bằng tiếng Việt. Ví dụ:",
|
|
282
283
|
promptEx: "Tạo cho tôi một trang sản phẩm trên WebCake cho thương hiệu [tên thương hiệu].\nTrang cần có: ảnh sản phẩm lớn, tên và giá, mô tả ngắn, nút \"Mua ngay\".\nKiểm tra kỹ trước khi lưu, rồi xuất bản lên cửa hàng của tôi.",
|
|
283
284
|
faqH2: "Câu hỏi thường gặp",
|
|
285
|
+
newH2: "Có gì mới",
|
|
286
|
+
newBadge: "MỚI",
|
|
287
|
+
clMore: "Xem tất cả thay đổi",
|
|
284
288
|
starH2: "Thấy hữu ích? Tặng dự án một ngôi sao nhé",
|
|
285
289
|
starP: "Đây là dự án miễn phí, mã nguồn mở — mỗi ngôi sao là một lời động viên để dự án tiếp tục phát triển và giúp nhiều người tìm ra nó hơn.",
|
|
286
290
|
starBtn: "Tặng sao trên GitHub",
|
|
@@ -292,6 +296,7 @@ const T = {
|
|
|
292
296
|
{ href: "#build", label: "Tạo được gì" },
|
|
293
297
|
{ href: "#connect", label: "Kết nối" },
|
|
294
298
|
{ href: "#tools", label: "Trợ lý làm gì" },
|
|
299
|
+
{ href: "#new", label: "Có gì mới" },
|
|
295
300
|
{ href: "#faq", label: "Hỏi đáp" },
|
|
296
301
|
],
|
|
297
302
|
},
|
|
@@ -439,6 +444,9 @@ const T = {
|
|
|
439
444
|
promptSub: "You can speak naturally. For example:",
|
|
440
445
|
promptEx: "Create a product page on my WebCake store for [brand name].\nThe page should have: a large product image, name and price, a short description, and a \"Buy Now\" button.\nPlease check everything looks right before saving, then publish it to my store.",
|
|
441
446
|
faqH2: "Frequently asked questions",
|
|
447
|
+
newH2: "What's new",
|
|
448
|
+
newBadge: "NEW",
|
|
449
|
+
clMore: "See all changes",
|
|
442
450
|
starH2: "Find it useful? Give the project a star",
|
|
443
451
|
starP: "It's a free, open-source project — every star is a little encouragement to keep it growing and helps more people find it.",
|
|
444
452
|
starBtn: "Star on GitHub",
|
|
@@ -450,10 +458,38 @@ const T = {
|
|
|
450
458
|
{ href: "#build", label: "What you build" },
|
|
451
459
|
{ href: "#connect", label: "Connect" },
|
|
452
460
|
{ href: "#tools", label: "What it does" },
|
|
461
|
+
{ href: "#new", label: "What's new" },
|
|
453
462
|
{ href: "#faq", label: "FAQ" },
|
|
454
463
|
],
|
|
455
464
|
},
|
|
456
465
|
};
|
|
466
|
+
const CHANGELOG = loadChangelog();
|
|
467
|
+
function loadChangelog() {
|
|
468
|
+
try {
|
|
469
|
+
const raw = readFileSync(new URL("./changelog.json", import.meta.url), "utf8");
|
|
470
|
+
const data = JSON.parse(raw);
|
|
471
|
+
return Array.isArray(data) ? data : [];
|
|
472
|
+
}
|
|
473
|
+
catch {
|
|
474
|
+
return [];
|
|
475
|
+
}
|
|
476
|
+
}
|
|
477
|
+
// English Keep-a-Changelog section names → short Vietnamese tags (en uses the raw name).
|
|
478
|
+
const CL_TYPE_VI = {
|
|
479
|
+
Added: "Thêm mới",
|
|
480
|
+
Changed: "Cải tiến",
|
|
481
|
+
Fixed: "Sửa lỗi",
|
|
482
|
+
Removed: "Gỡ bỏ",
|
|
483
|
+
Deprecated: "Ngừng dùng",
|
|
484
|
+
Security: "Bảo mật",
|
|
485
|
+
Internal: "Nội bộ",
|
|
486
|
+
};
|
|
487
|
+
function clTag(type, lang) {
|
|
488
|
+
if (!type)
|
|
489
|
+
return "";
|
|
490
|
+
const label = lang === "vi" ? (CL_TYPE_VI[type] ?? "") : type;
|
|
491
|
+
return label ? ` <span class="cl-tag">${label}</span>` : "";
|
|
492
|
+
}
|
|
457
493
|
function steps(items) {
|
|
458
494
|
return items
|
|
459
495
|
.map((body, i) => `<li><span class="n">${i + 1}</span><div class="body">${body}</div></li>`)
|
|
@@ -704,6 +740,26 @@ export function guideHtml(origin, lang = "vi") {
|
|
|
704
740
|
display:flex;gap:18px;flex-wrap:wrap;align-items:center}
|
|
705
741
|
footer a{color:var(--g7);font-weight:600;text-decoration:none;display:inline-flex;align-items:center;gap:6px}
|
|
706
742
|
footer a:hover{text-decoration:underline}
|
|
743
|
+
.cl-wrap{padding:24px 26px 12px}
|
|
744
|
+
.cl{position:relative;margin:0;padding:0 0 0 24px;list-style:none}
|
|
745
|
+
.cl::before{content:"";position:absolute;left:6px;top:8px;bottom:14px;width:2px;
|
|
746
|
+
background:linear-gradient(var(--g),rgba(16,139,103,.08))}
|
|
747
|
+
.cl li{position:relative;padding:0 0 18px}
|
|
748
|
+
.cl li:last-child{padding-bottom:0}
|
|
749
|
+
.cl li::before{content:"";position:absolute;left:-24px;top:4px;width:12px;height:12px;border-radius:50%;
|
|
750
|
+
background:var(--card);border:2.5px solid var(--g);box-sizing:border-box}
|
|
751
|
+
.cl li.is-new::before{box-shadow:0 0 0 0 rgba(16,139,103,.5);animation:ring 2s infinite}
|
|
752
|
+
@keyframes ring{70%{box-shadow:0 0 0 8px rgba(16,139,103,0)}100%{box-shadow:0 0 0 0 rgba(16,139,103,0)}}
|
|
753
|
+
.cl .v{display:inline-flex;align-items:center;gap:8px;font-weight:800;font-size:.97rem;flex-wrap:wrap}
|
|
754
|
+
.cl-tag{font-size:.68rem;font-weight:700;color:var(--g7);background:rgba(16,139,103,.12);
|
|
755
|
+
border:1px solid var(--line);padding:1px 8px;border-radius:999px;margin-left:8px}
|
|
756
|
+
.cl .date{color:var(--mut);font-size:.79rem;margin-left:8px;font-weight:500}
|
|
757
|
+
.cl .t{color:var(--mut);font-size:.91rem;margin:3px 0 0;max-width:62ch}
|
|
758
|
+
.new{font-size:.64rem;font-weight:800;letter-spacing:.06em;color:#fff;background:var(--g);
|
|
759
|
+
padding:2px 7px;border-radius:999px;animation:blink 1.8s ease-in-out infinite}
|
|
760
|
+
@keyframes blink{50%{opacity:.55}}
|
|
761
|
+
.cl-more{display:inline-flex;align-items:center;gap:6px;margin-top:6px;font-size:.86rem;font-weight:600;color:var(--g7);text-decoration:none}
|
|
762
|
+
.cl-more:hover{gap:9px}
|
|
707
763
|
@media(max-width:640px){
|
|
708
764
|
.wrap{padding:30px 15px 56px}
|
|
709
765
|
header{flex-wrap:wrap;gap:12px}
|
|
@@ -714,6 +770,7 @@ export function guideHtml(origin, lang = "vi") {
|
|
|
714
770
|
.method{padding:18px 15px}
|
|
715
771
|
.card{padding:18px}
|
|
716
772
|
.tip{padding:11px 12px}
|
|
773
|
+
.cl-wrap{padding:18px 16px 10px}
|
|
717
774
|
.langsw{padding:6px 10px}
|
|
718
775
|
.uses li,.feat li{padding:14px}
|
|
719
776
|
.flow{flex-direction:column;align-items:stretch;overflow:visible;padding:16px}
|
|
@@ -751,7 +808,7 @@ export function guideHtml(origin, lang = "vi") {
|
|
|
751
808
|
</div>
|
|
752
809
|
</header>
|
|
753
810
|
|
|
754
|
-
<p class="hero-in" style="display:flex;gap:9px;flex-wrap:wrap"><span class="pill"><span class="dot"></span> ${t.running}</span><span class="pill">WebCake · StoreCake</span
|
|
811
|
+
<p class="hero-in" style="display:flex;gap:9px;flex-wrap:wrap"><span class="pill"><span class="dot"></span> ${t.running}</span><span class="pill">WebCake · StoreCake</span>${CHANGELOG[0] ? `<span class="pill">v${CHANGELOG[0].v}</span>` : ""}</p>
|
|
755
812
|
|
|
756
813
|
<p class="lead hero-in">${t.leadPre}<b class="grad">${t.leadGrad}</b>${t.leadPost}</p>
|
|
757
814
|
|
|
@@ -828,6 +885,16 @@ export function guideHtml(origin, lang = "vi") {
|
|
|
828
885
|
<li class="glass reveal">${tile("wand")} <span><pre style="background:transparent;color:inherit;border:none;padding:0;font-size:.88rem;white-space:pre-wrap">${t.promptEx}</pre></span></li>
|
|
829
886
|
</ul>
|
|
830
887
|
|
|
888
|
+
${CHANGELOG.length
|
|
889
|
+
? `<h2 id="new" class="reveal">${t.newH2}</h2>
|
|
890
|
+
<div class="glass cl-wrap reveal">
|
|
891
|
+
<ul class="cl">
|
|
892
|
+
${CHANGELOG.map((c, i) => `<li class="${i === 0 ? "is-new" : ""}"><span class="v">v${c.v}${i === 0 ? ` <span class="new">${t.newBadge}</span>` : ""}${clTag(c.type, L)}<span class="date">${c.d}</span></span><p class="t">${L === "en" ? c.en : c.vi}</p></li>`).join("\n ")}
|
|
893
|
+
</ul>
|
|
894
|
+
<a class="cl-more" href="${GITHUB_URL}/blob/main/${L === "en" ? "CHANGELOG.md" : "CHANGELOG.vi.md"}">${t.clMore} ${icon("arrow")}</a>
|
|
895
|
+
</div>`
|
|
896
|
+
: ""}
|
|
897
|
+
|
|
831
898
|
<h2 id="faq" class="reveal">${t.faqH2}</h2>
|
|
832
899
|
${faq.map((f) => `<details class="glass reveal"><summary>${f.q}</summary><p>${f.a}</p></details>`).join("\n ")}
|
|
833
900
|
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "webcake-storefront-mcp",
|
|
3
|
-
"version": "1.1.
|
|
3
|
+
"version": "1.1.4",
|
|
4
4
|
"description": "MCP server for the WebCake/StoreCake storefront builder — page CRUD, page authoring, products, orders, and more",
|
|
5
5
|
"mcpName": "io.github.vuluu2k/webcake-storefront-mcp",
|
|
6
6
|
"license": "MIT",
|
|
@@ -24,7 +24,7 @@
|
|
|
24
24
|
"node": ">=18"
|
|
25
25
|
},
|
|
26
26
|
"scripts": {
|
|
27
|
-
"build": "tsc && node scripts/copy-assets.mjs",
|
|
27
|
+
"build": "node scripts/gen-changelog.mjs && tsc && node scripts/copy-assets.mjs",
|
|
28
28
|
"start": "node dist/index.js",
|
|
29
29
|
"serve": "node dist/index.js serve",
|
|
30
30
|
"dev": "tsc --watch",
|