@upx-us/shield 0.7.7 → 0.7.9

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 CHANGED
@@ -4,6 +4,22 @@ All notable changes to this project will be documented in this file.
4
4
 
5
5
  ---
6
6
 
7
+ ## [0.7.9] — 2026-03-16
8
+
9
+ ### Fixed
10
+
11
+ - **Bug causing the plugin to repeatedly reinstall itself to the same version** — After a self-update, the plugin could enter a loop installing the already-installed version (e.g. 0.7.8 → 0.7.8) because the cached update state was not cleared correctly. The updater now verifies that the candidate version is strictly newer than the running version before proceeding with any install.
12
+
13
+ ---
14
+
15
+ ## [0.7.8] — 2026-03-16
16
+
17
+ ### Fixed
18
+
19
+ - **Bug causing the plugin to be repeatedly terminated by the gateway after updating** — The same boot-loop fix from v0.7.7 was missing from the gateway plugin entrypoint. When running as an OpenClaw plugin (the normal mode), the gateway would spawn the plugin, the plugin would trigger a new update check, send itself a restart signal, and get killed — silently repeating on every boot.
20
+
21
+ ---
22
+
7
23
  ## [0.7.7] — 2026-03-16
8
24
 
9
25
  ### Fixed
package/dist/index.js CHANGED
@@ -667,8 +667,9 @@ exports.default = {
667
667
  }
668
668
  catch { }
669
669
  const autoUpdateMode = pluginConfig.autoUpdate ?? true;
670
- log.info('updater', `Startup update check (autoUpdate=${autoUpdateMode}, current=${version_1.VERSION})`);
671
- const startupUpdate = (0, updater_1.performAutoUpdate)(autoUpdateMode, 0);
670
+ const _bootState = (0, updater_1.loadUpdateState)();
671
+ log.info('updater', `Startup update check (autoUpdate=${autoUpdateMode}, current=${version_1.VERSION}, pendingRestart=${_bootState.pendingRestart})`);
672
+ const startupUpdate = (0, updater_1.performAutoUpdate)(autoUpdateMode, _bootState.pendingRestart ? undefined : 0);
672
673
  if (startupUpdate.action === 'updated') {
673
674
  log.info('updater', startupUpdate.message);
674
675
  const restarted = (0, updater_1.requestGatewayRestart)();
@@ -150,7 +150,7 @@ function checkForUpdate(overrideInterval) {
150
150
  const now = Date.now();
151
151
  const interval = overrideInterval ?? CHECK_INTERVAL_MS;
152
152
  if (now - state.lastCheckAt < Math.max(interval, MIN_CHECK_INTERVAL_MS)) {
153
- if (state.updateAvailable && state.latestVersion) {
153
+ if (state.updateAvailable && state.latestVersion && isNewerVersion(version_1.VERSION, state.latestVersion)) {
154
154
  const classification = classifyUpdate(version_1.VERSION, state.latestVersion);
155
155
  return {
156
156
  updateAvailable: true,
@@ -515,6 +515,13 @@ function performAutoUpdate(mode, checkIntervalMs) {
515
515
  const check = checkForUpdate(checkIntervalMs);
516
516
  if (!check || !check.updateAvailable)
517
517
  return noOp;
518
+ if (!isNewerVersion(version_1.VERSION, check.latestVersion)) {
519
+ log.info('updater', `Already on ${version_1.VERSION} — clearing stale updateAvailable flag`);
520
+ const st = loadUpdateState();
521
+ st.updateAvailable = false;
522
+ saveUpdateState(st);
523
+ return noOp;
524
+ }
518
525
  if (mode === 'notify-only') {
519
526
  const kind = check.isPatch ? 'patch' : check.isMinor ? 'minor' : 'major';
520
527
  return {
@@ -2,7 +2,7 @@
2
2
  "id": "shield",
3
3
  "name": "OpenClaw Shield",
4
4
  "description": "Real-time security monitoring — streams enriched, redacted security events to the Shield detection platform.",
5
- "version": "0.7.7",
5
+ "version": "0.7.9",
6
6
  "skills": [
7
7
  "./skills"
8
8
  ],
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@upx-us/shield",
3
- "version": "0.7.7",
3
+ "version": "0.7.9",
4
4
  "description": "Security monitoring plugin for OpenClaw agents — streams enriched security events to the Shield detection platform",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/index.d.ts",