@silicaclaw/cli 2026.3.20-22 → 2026.3.20-23
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 +6 -0
- package/VERSION +1 -1
- package/apps/local-console/dist/apps/local-console/src/server.d.ts +6 -0
- package/apps/local-console/dist/apps/local-console/src/server.js +7 -0
- package/apps/local-console/public/app/social.js +17 -4
- package/apps/local-console/public/app/translations.js +6 -0
- package/apps/local-console/src/server.ts +7 -0
- package/openclaw-skills/silicaclaw-broadcast/VERSION +1 -1
- package/openclaw-skills/silicaclaw-broadcast/manifest.json +1 -1
- package/package.json +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -2,6 +2,12 @@
|
|
|
2
2
|
|
|
3
3
|
## v1.0 beta - 2026-03-20
|
|
4
4
|
|
|
5
|
+
### 2026.3.20-23
|
|
6
|
+
|
|
7
|
+
- release build:
|
|
8
|
+
- prepared another fresh latest-channel package build without publishing
|
|
9
|
+
- regenerated the npm tarball through the verified release packing workflow
|
|
10
|
+
|
|
5
11
|
### 2026.3.20-22
|
|
6
12
|
|
|
7
13
|
- release build:
|
package/VERSION
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
v2026.3.20-
|
|
1
|
+
v2026.3.20-23
|
|
@@ -705,6 +705,12 @@ export declare class LocalNodeService {
|
|
|
705
705
|
};
|
|
706
706
|
getOpenClawBridgeConfig(): OpenClawBridgeConfigView;
|
|
707
707
|
getSkillsView(): {
|
|
708
|
+
diagnostics: {
|
|
709
|
+
bundled_root: string;
|
|
710
|
+
bundled_root_exists: boolean;
|
|
711
|
+
bundled_root_candidates: string[];
|
|
712
|
+
runtime_restart_hint: string;
|
|
713
|
+
};
|
|
708
714
|
openclaw: {
|
|
709
715
|
detected: boolean;
|
|
710
716
|
running: boolean;
|
|
@@ -1901,6 +1901,7 @@ class LocalNodeService {
|
|
|
1901
1901
|
(0, path_1.resolve)(this.projectRoot, "openclaw-skills"),
|
|
1902
1902
|
];
|
|
1903
1903
|
const bundledRoot = bundledRootCandidates.find((candidate) => (0, fs_1.existsSync)(candidate)) || bundledRootCandidates[0];
|
|
1904
|
+
const bundledRootExists = (0, fs_1.existsSync)(bundledRoot);
|
|
1904
1905
|
const openclawHome = (0, path_1.resolve)(process.env.HOME || "", ".openclaw");
|
|
1905
1906
|
const workspaceInstallRoot = (0, path_1.resolve)(openclawHome, "workspace", "skills");
|
|
1906
1907
|
const legacyInstallRoot = (0, path_1.resolve)(openclawHome, "skills");
|
|
@@ -2000,6 +2001,12 @@ class LocalNodeService {
|
|
|
2000
2001
|
};
|
|
2001
2002
|
});
|
|
2002
2003
|
return {
|
|
2004
|
+
diagnostics: {
|
|
2005
|
+
bundled_root: bundledRoot,
|
|
2006
|
+
bundled_root_exists: bundledRootExists,
|
|
2007
|
+
bundled_root_candidates: bundledRootCandidates,
|
|
2008
|
+
runtime_restart_hint: "silicaclaw gateway restart",
|
|
2009
|
+
},
|
|
2003
2010
|
openclaw: {
|
|
2004
2011
|
detected: bridge.openclaw_installation.detected,
|
|
2005
2012
|
running: bridge.openclaw_runtime.running,
|
|
@@ -714,6 +714,7 @@ export function createSocialController({
|
|
|
714
714
|
lastSkillsPayload = payload;
|
|
715
715
|
const bundled = Array.isArray(payload.bundled_skills) ? payload.bundled_skills : [];
|
|
716
716
|
const installed = Array.isArray(payload.installed_skills) ? payload.installed_skills : [];
|
|
717
|
+
const diagnostics = payload.diagnostics || {};
|
|
717
718
|
const openclaw = payload.openclaw || {};
|
|
718
719
|
const summary = payload.summary || {};
|
|
719
720
|
const installAction = payload.install_action || {};
|
|
@@ -747,7 +748,15 @@ export function createSocialController({
|
|
|
747
748
|
installed: String(summary.installed_count || 0),
|
|
748
749
|
});
|
|
749
750
|
|
|
750
|
-
if (
|
|
751
|
+
if ((summary.bundled_count || 0) === 0 && diagnostics.bundled_root_exists === false) {
|
|
752
|
+
setSkillActionCopy({
|
|
753
|
+
title: t("hints.skillsActionRuntimeSyncTitle"),
|
|
754
|
+
body: t("hints.skillsActionRuntimeSyncBody", {
|
|
755
|
+
command: String(diagnostics.runtime_restart_hint || "silicaclaw gateway restart"),
|
|
756
|
+
}),
|
|
757
|
+
state: t("labels.skillsStateAttention"),
|
|
758
|
+
});
|
|
759
|
+
} else if (!openclawDetected) {
|
|
751
760
|
setSkillActionCopy({
|
|
752
761
|
title: t("hints.skillsActionMissingTitle"),
|
|
753
762
|
body: t("hints.skillsActionMissingBody"),
|
|
@@ -879,9 +888,13 @@ export function createSocialController({
|
|
|
879
888
|
? t("actions.silicaClawSkillsInstalled")
|
|
880
889
|
: t("actions.installSilicaClawSkills");
|
|
881
890
|
installBtn.disabled = !openclawDetected || !openclawRunning || (allFeaturedInstalled && bundledUpdateCount === 0);
|
|
882
|
-
document.getElementById("skillsFeedback").textContent =
|
|
883
|
-
? t("feedback.
|
|
884
|
-
|
|
891
|
+
document.getElementById("skillsFeedback").textContent = (summary.bundled_count || 0) === 0 && diagnostics.bundled_root_exists === false
|
|
892
|
+
? t("feedback.skillsRuntimeSyncNeeded", {
|
|
893
|
+
command: String(diagnostics.runtime_restart_hint || "silicaclaw gateway restart"),
|
|
894
|
+
})
|
|
895
|
+
: allFeaturedInstalled && bundledUpdateCount === 0
|
|
896
|
+
? t("feedback.openclawSkillInstalled")
|
|
897
|
+
: installAction.recommended_command || t("common.ready");
|
|
885
898
|
}
|
|
886
899
|
|
|
887
900
|
return {
|
|
@@ -316,6 +316,8 @@ export const TRANSLATIONS = {
|
|
|
316
316
|
skillsActionMissingBody: 'Bundled skills are here, but OpenClaw is not available yet.',
|
|
317
317
|
skillsActionStoppedTitle: 'Start OpenClaw first.',
|
|
318
318
|
skillsActionStoppedBody: 'OpenClaw is installed but not running yet.',
|
|
319
|
+
skillsActionRuntimeSyncTitle: 'Bundled skills are missing from the local runtime.',
|
|
320
|
+
skillsActionRuntimeSyncBody: 'This usually means the managed runtime has not synced the latest skill bundle yet. Run {command}, then refresh this page.',
|
|
319
321
|
skillsActionUpdateTitle: '{count} skill update ready.',
|
|
320
322
|
skillsActionUpdateBody: 'Update bundled skills to stay aligned.',
|
|
321
323
|
skillsActionPartialTitle: 'Finish the remaining key skill.',
|
|
@@ -569,6 +571,7 @@ export const TRANSLATIONS = {
|
|
|
569
571
|
appUpdateLatest: 'Already on the latest version.',
|
|
570
572
|
appUpdateCheckFailed: 'Could not check for updates.',
|
|
571
573
|
appUpdateFailed: 'Could not start the update.',
|
|
574
|
+
skillsRuntimeSyncNeeded: 'Bundled skills are missing from the current runtime. Run {command}.',
|
|
572
575
|
copyPreviewFailed: 'Copy preview failed',
|
|
573
576
|
logsRefreshed: 'Logs refreshed',
|
|
574
577
|
crossPreviewEnabled: 'Cross-network preview enabled',
|
|
@@ -938,6 +941,8 @@ export const TRANSLATIONS = {
|
|
|
938
941
|
skillsActionMissingBody: '项目技能已经在,但本机还没有可用的 OpenClaw。',
|
|
939
942
|
skillsActionStoppedTitle: '先启动 OpenClaw。',
|
|
940
943
|
skillsActionStoppedBody: 'OpenClaw 已安装,但当前未运行。',
|
|
944
|
+
skillsActionRuntimeSyncTitle: '当前本地运行时还没有同步项目技能。',
|
|
945
|
+
skillsActionRuntimeSyncBody: '这通常表示 managed runtime 还没同步到最新技能包。先执行 {command},再刷新这个页面。',
|
|
941
946
|
skillsActionUpdateTitle: '有 {count} 个技能可更新。',
|
|
942
947
|
skillsActionUpdateBody: '更新项目技能,保持一致。',
|
|
943
948
|
skillsActionPartialTitle: '补齐剩下的关键技能。',
|
|
@@ -1191,6 +1196,7 @@ export const TRANSLATIONS = {
|
|
|
1191
1196
|
appUpdateLatest: '当前已经是最新版本。',
|
|
1192
1197
|
appUpdateCheckFailed: '暂时无法检查更新。',
|
|
1193
1198
|
appUpdateFailed: '无法开始更新。',
|
|
1199
|
+
skillsRuntimeSyncNeeded: '当前运行时缺少项目技能。请执行 {command}。',
|
|
1194
1200
|
copyPreviewFailed: '复制预览失败',
|
|
1195
1201
|
logsRefreshed: '日志已刷新',
|
|
1196
1202
|
crossPreviewEnabled: '跨网络预览已启用',
|
|
@@ -2271,6 +2271,7 @@ export class LocalNodeService {
|
|
|
2271
2271
|
resolve(this.projectRoot, "openclaw-skills"),
|
|
2272
2272
|
];
|
|
2273
2273
|
const bundledRoot = bundledRootCandidates.find((candidate) => existsSync(candidate)) || bundledRootCandidates[0];
|
|
2274
|
+
const bundledRootExists = existsSync(bundledRoot);
|
|
2274
2275
|
const openclawHome = resolve(process.env.HOME || "", ".openclaw");
|
|
2275
2276
|
const workspaceInstallRoot = resolve(openclawHome, "workspace", "skills");
|
|
2276
2277
|
const legacyInstallRoot = resolve(openclawHome, "skills");
|
|
@@ -2377,6 +2378,12 @@ export class LocalNodeService {
|
|
|
2377
2378
|
});
|
|
2378
2379
|
|
|
2379
2380
|
return {
|
|
2381
|
+
diagnostics: {
|
|
2382
|
+
bundled_root: bundledRoot,
|
|
2383
|
+
bundled_root_exists: bundledRootExists,
|
|
2384
|
+
bundled_root_candidates: bundledRootCandidates,
|
|
2385
|
+
runtime_restart_hint: "silicaclaw gateway restart",
|
|
2386
|
+
},
|
|
2380
2387
|
openclaw: {
|
|
2381
2388
|
detected: bridge.openclaw_installation.detected,
|
|
2382
2389
|
running: bridge.openclaw_runtime.running,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
2026.3.20-beta.
|
|
1
|
+
2026.3.20-beta.23
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "silicaclaw-broadcast",
|
|
3
|
-
"version": "2026.3.20-beta.
|
|
3
|
+
"version": "2026.3.20-beta.23",
|
|
4
4
|
"display_name": "SilicaClaw Broadcast",
|
|
5
5
|
"description": "Official OpenClaw skill for a bounded local SilicaClaw broadcast workflow: read public broadcasts, publish public broadcasts, and optionally forward owner-relevant summaries through OpenClaw's native channel.",
|
|
6
6
|
"entrypoints": {
|