@silicaclaw/cli 2026.3.20-20 → 2026.3.20-22
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 +12 -0
- package/VERSION +1 -1
- package/apps/local-console/dist/apps/local-console/src/server.js +11 -1
- package/apps/local-console/public/app/app.js +34 -4
- package/apps/local-console/public/app/translations.js +8 -0
- package/apps/local-console/src/server.ts +13 -1
- package/openclaw-skills/silicaclaw-broadcast/VERSION +1 -1
- package/openclaw-skills/silicaclaw-broadcast/manifest.json +1 -1
- package/package.json +1 -1
- package/scripts/silicaclaw-cli.mjs +1 -0
- package/scripts/silicaclaw-gateway.mjs +1 -0
package/CHANGELOG.md
CHANGED
|
@@ -2,6 +2,18 @@
|
|
|
2
2
|
|
|
3
3
|
## v1.0 beta - 2026-03-20
|
|
4
4
|
|
|
5
|
+
### 2026.3.20-22
|
|
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
|
+
|
|
11
|
+
### 2026.3.20-21
|
|
12
|
+
|
|
13
|
+
- release build:
|
|
14
|
+
- prepared another fresh latest-channel package build without publishing
|
|
15
|
+
- regenerated the npm tarball through the verified release packing workflow
|
|
16
|
+
|
|
5
17
|
### 2026.3.20-20
|
|
6
18
|
|
|
7
19
|
- release build:
|
package/VERSION
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
v2026.3.20-
|
|
1
|
+
v2026.3.20-22
|
|
@@ -154,6 +154,12 @@ function userShimPath() {
|
|
|
154
154
|
return (0, path_1.resolve)((0, os_1.homedir)(), ".silicaclaw", "bin", "silicaclaw");
|
|
155
155
|
}
|
|
156
156
|
function resolveWorkspaceRoot(cwd = process.cwd()) {
|
|
157
|
+
const envAppRoot = String(process.env.SILICACLAW_APP_DIR || "").trim();
|
|
158
|
+
if (envAppRoot &&
|
|
159
|
+
(0, fs_1.existsSync)((0, path_1.resolve)(envAppRoot, "apps", "local-console", "package.json")) &&
|
|
160
|
+
(0, fs_1.existsSync)((0, path_1.resolve)(envAppRoot, "package.json"))) {
|
|
161
|
+
return (0, path_1.resolve)(envAppRoot);
|
|
162
|
+
}
|
|
157
163
|
if ((0, fs_1.existsSync)((0, path_1.resolve)(cwd, "apps", "local-console", "package.json"))) {
|
|
158
164
|
return cwd;
|
|
159
165
|
}
|
|
@@ -1890,7 +1896,11 @@ class LocalNodeService {
|
|
|
1890
1896
|
};
|
|
1891
1897
|
}
|
|
1892
1898
|
getSkillsView() {
|
|
1893
|
-
const
|
|
1899
|
+
const bundledRootCandidates = [
|
|
1900
|
+
(0, path_1.resolve)(this.workspaceRoot, "openclaw-skills"),
|
|
1901
|
+
(0, path_1.resolve)(this.projectRoot, "openclaw-skills"),
|
|
1902
|
+
];
|
|
1903
|
+
const bundledRoot = bundledRootCandidates.find((candidate) => (0, fs_1.existsSync)(candidate)) || bundledRootCandidates[0];
|
|
1894
1904
|
const openclawHome = (0, path_1.resolve)(process.env.HOME || "", ".openclaw");
|
|
1895
1905
|
const workspaceInstallRoot = (0, path_1.resolve)(openclawHome, "workspace", "skills");
|
|
1896
1906
|
const legacyInstallRoot = (0, path_1.resolve)(openclawHome, "skills");
|
|
@@ -338,6 +338,7 @@ const APP_UPDATE_SESSION_KEY = 'silicaclaw_pending_updated_version';
|
|
|
338
338
|
} = shell;
|
|
339
339
|
let appUpdatePollTimer = null;
|
|
340
340
|
let appUpdateCheckInFlight = false;
|
|
341
|
+
let appUpdatePendingTargetVersion = '';
|
|
341
342
|
let relayQueueCheckInFlight = false;
|
|
342
343
|
let lastRelayQueueCheckAt = 0;
|
|
343
344
|
|
|
@@ -422,9 +423,33 @@ const APP_UPDATE_SESSION_KEY = 'silicaclaw_pending_updated_version';
|
|
|
422
423
|
const currentVersion = String(status.current_version || '').trim();
|
|
423
424
|
const latestVersion = String(status.latest_version || '').trim();
|
|
424
425
|
const platformHint = platformUpdateHint(String(status.platform || ''));
|
|
426
|
+
const pendingTarget = String(appUpdatePendingTargetVersion || '').trim();
|
|
425
427
|
if (currentVersion) {
|
|
426
428
|
document.getElementById('brandVersion').textContent = currentVersion.startsWith('v') ? currentVersion : `v${currentVersion}`;
|
|
427
429
|
}
|
|
430
|
+
if (pendingTarget && currentVersion && currentVersion === pendingTarget) {
|
|
431
|
+
appUpdatePendingTargetVersion = '';
|
|
432
|
+
setAppUpdateUi({
|
|
433
|
+
hint: t('labels.versionUpdated', { version: currentVersion.startsWith('v') ? currentVersion : `v${currentVersion}` }),
|
|
434
|
+
buttonVisible: false,
|
|
435
|
+
buttonDisabled: false,
|
|
436
|
+
buttonText: t('actions.updateNow'),
|
|
437
|
+
checkVisible: true,
|
|
438
|
+
checkDisabled: false,
|
|
439
|
+
});
|
|
440
|
+
return status;
|
|
441
|
+
}
|
|
442
|
+
if (pendingTarget) {
|
|
443
|
+
setAppUpdateUi({
|
|
444
|
+
hint: t('labels.versionUpdatingTo', { version: pendingTarget.startsWith('v') ? pendingTarget : `v${pendingTarget}` }),
|
|
445
|
+
buttonVisible: true,
|
|
446
|
+
buttonDisabled: true,
|
|
447
|
+
buttonText: t('labels.versionUpdating'),
|
|
448
|
+
checkVisible: true,
|
|
449
|
+
checkDisabled: true,
|
|
450
|
+
});
|
|
451
|
+
return status;
|
|
452
|
+
}
|
|
428
453
|
if (status.update_available && status.latest_version) {
|
|
429
454
|
setAppUpdateUi({
|
|
430
455
|
hint: `${t('labels.versionUpdateReady', { version: `v${status.latest_version}` })} · ${platformHint}`,
|
|
@@ -479,6 +504,7 @@ const APP_UPDATE_SESSION_KEY = 'silicaclaw_pending_updated_version';
|
|
|
479
504
|
if (appUpdatePollTimer) {
|
|
480
505
|
window.clearInterval(appUpdatePollTimer);
|
|
481
506
|
}
|
|
507
|
+
appUpdatePendingTargetVersion = String(targetVersion || '').trim();
|
|
482
508
|
let attempts = 0;
|
|
483
509
|
appUpdatePollTimer = window.setInterval(async () => {
|
|
484
510
|
attempts += 1;
|
|
@@ -486,6 +512,7 @@ const APP_UPDATE_SESSION_KEY = 'silicaclaw_pending_updated_version';
|
|
|
486
512
|
if (status && !status.update_available && String(status.current_version || '') === String(targetVersion || '')) {
|
|
487
513
|
window.clearInterval(appUpdatePollTimer);
|
|
488
514
|
appUpdatePollTimer = null;
|
|
515
|
+
appUpdatePendingTargetVersion = '';
|
|
489
516
|
if (targetVersion) {
|
|
490
517
|
window.sessionStorage.setItem(APP_UPDATE_SESSION_KEY, String(targetVersion));
|
|
491
518
|
}
|
|
@@ -495,11 +522,12 @@ const APP_UPDATE_SESSION_KEY = 'silicaclaw_pending_updated_version';
|
|
|
495
522
|
if (attempts >= 24) {
|
|
496
523
|
window.clearInterval(appUpdatePollTimer);
|
|
497
524
|
appUpdatePollTimer = null;
|
|
525
|
+
appUpdatePendingTargetVersion = '';
|
|
498
526
|
setAppUpdateUi({
|
|
499
|
-
hint: t('labels.
|
|
500
|
-
buttonVisible:
|
|
527
|
+
hint: t('labels.versionUpdateStillPending'),
|
|
528
|
+
buttonVisible: true,
|
|
501
529
|
buttonDisabled: false,
|
|
502
|
-
buttonText: t('actions.
|
|
530
|
+
buttonText: t('actions.updateRetry'),
|
|
503
531
|
checkVisible: true,
|
|
504
532
|
checkDisabled: false,
|
|
505
533
|
});
|
|
@@ -521,6 +549,7 @@ const APP_UPDATE_SESSION_KEY = 'silicaclaw_pending_updated_version';
|
|
|
521
549
|
const result = await api('/api/app/update', { method: 'POST' });
|
|
522
550
|
const data = result.data || {};
|
|
523
551
|
if (!data.started) {
|
|
552
|
+
appUpdatePendingTargetVersion = '';
|
|
524
553
|
setAppUpdateUi({
|
|
525
554
|
hint: t('labels.versionCurrent'),
|
|
526
555
|
buttonVisible: false,
|
|
@@ -535,11 +564,12 @@ const APP_UPDATE_SESSION_KEY = 'silicaclaw_pending_updated_version';
|
|
|
535
564
|
toast(t('feedback.appUpdateStarted'));
|
|
536
565
|
startAppUpdatePolling(String(data.target_version || ''));
|
|
537
566
|
} catch (error) {
|
|
567
|
+
appUpdatePendingTargetVersion = '';
|
|
538
568
|
setAppUpdateUi({
|
|
539
569
|
hint: t('labels.versionCheckFailed'),
|
|
540
570
|
buttonVisible: true,
|
|
541
571
|
buttonDisabled: false,
|
|
542
|
-
buttonText: t('actions.
|
|
572
|
+
buttonText: t('actions.updateRetry'),
|
|
543
573
|
checkVisible: true,
|
|
544
574
|
checkDisabled: false,
|
|
545
575
|
});
|
|
@@ -62,6 +62,7 @@ export const TRANSLATIONS = {
|
|
|
62
62
|
broadcastNow: 'Announce Agent Now',
|
|
63
63
|
checkUpdate: 'Check',
|
|
64
64
|
updateNow: 'Update',
|
|
65
|
+
updateRetry: 'Try Again',
|
|
65
66
|
updateNowVersion: 'Update {version}',
|
|
66
67
|
editProfile: 'Edit Profile',
|
|
67
68
|
openNetwork: 'Network',
|
|
@@ -152,6 +153,9 @@ export const TRANSLATIONS = {
|
|
|
152
153
|
versionCurrent: 'Up to date',
|
|
153
154
|
versionUpdateReady: 'Update {version} ready',
|
|
154
155
|
versionUpdating: 'Updating...',
|
|
156
|
+
versionUpdatingTo: 'Updating to {version}. Refreshing local service...',
|
|
157
|
+
versionUpdated: 'Updated to {version}',
|
|
158
|
+
versionUpdateStillPending: 'Update is still in progress. You can try again in a moment.',
|
|
155
159
|
versionCheckFailed: 'Could not check updates',
|
|
156
160
|
versionPlatformMac: 'macOS service will restart automatically',
|
|
157
161
|
versionPlatformLinux: 'Linux service will restart automatically',
|
|
@@ -680,6 +684,7 @@ export const TRANSLATIONS = {
|
|
|
680
684
|
broadcastNow: '立即公告代理',
|
|
681
685
|
checkUpdate: '检查',
|
|
682
686
|
updateNow: '立即更新',
|
|
687
|
+
updateRetry: '重试更新',
|
|
683
688
|
updateNowVersion: '更新到 {version}',
|
|
684
689
|
editProfile: '编辑资料',
|
|
685
690
|
openNetwork: '打开网络页',
|
|
@@ -757,6 +762,9 @@ export const TRANSLATIONS = {
|
|
|
757
762
|
versionCurrent: '已是最新版本',
|
|
758
763
|
versionUpdateReady: '可更新到 {version}',
|
|
759
764
|
versionUpdating: '正在更新...',
|
|
765
|
+
versionUpdatingTo: '正在更新到 {version},本地服务正在刷新...',
|
|
766
|
+
versionUpdated: '已更新到 {version}',
|
|
767
|
+
versionUpdateStillPending: '更新还在进行中,稍后可以再试一次。',
|
|
760
768
|
versionCheckFailed: '暂时无法检查更新',
|
|
761
769
|
versionPlatformMac: 'macOS 服务会自动重启',
|
|
762
770
|
versionPlatformLinux: 'Linux 服务会自动重启',
|
|
@@ -232,6 +232,14 @@ function userShimPath(): string {
|
|
|
232
232
|
}
|
|
233
233
|
|
|
234
234
|
function resolveWorkspaceRoot(cwd = process.cwd()): string {
|
|
235
|
+
const envAppRoot = String(process.env.SILICACLAW_APP_DIR || "").trim();
|
|
236
|
+
if (
|
|
237
|
+
envAppRoot &&
|
|
238
|
+
existsSync(resolve(envAppRoot, "apps", "local-console", "package.json")) &&
|
|
239
|
+
existsSync(resolve(envAppRoot, "package.json"))
|
|
240
|
+
) {
|
|
241
|
+
return resolve(envAppRoot);
|
|
242
|
+
}
|
|
235
243
|
if (existsSync(resolve(cwd, "apps", "local-console", "package.json"))) {
|
|
236
244
|
return cwd;
|
|
237
245
|
}
|
|
@@ -2258,7 +2266,11 @@ export class LocalNodeService {
|
|
|
2258
2266
|
}
|
|
2259
2267
|
|
|
2260
2268
|
getSkillsView() {
|
|
2261
|
-
const
|
|
2269
|
+
const bundledRootCandidates = [
|
|
2270
|
+
resolve(this.workspaceRoot, "openclaw-skills"),
|
|
2271
|
+
resolve(this.projectRoot, "openclaw-skills"),
|
|
2272
|
+
];
|
|
2273
|
+
const bundledRoot = bundledRootCandidates.find((candidate) => existsSync(candidate)) || bundledRootCandidates[0];
|
|
2262
2274
|
const openclawHome = resolve(process.env.HOME || "", ".openclaw");
|
|
2263
2275
|
const workspaceInstallRoot = resolve(openclawHome, "workspace", "skills");
|
|
2264
2276
|
const legacyInstallRoot = resolve(openclawHome, "skills");
|
|
@@ -1 +1 @@
|
|
|
1
|
-
2026.3.20-beta.
|
|
1
|
+
2026.3.20-beta.22
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "silicaclaw-broadcast",
|
|
3
|
-
"version": "2026.3.20-beta.
|
|
3
|
+
"version": "2026.3.20-beta.22",
|
|
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": {
|
package/package.json
CHANGED