From 065d9f408297c044a1e893b43fc4ec02a29df267 Mon Sep 17 00:00:00 2001 From: nyk <93952610+0xNyk@users.noreply.github.com> Date: Sat, 14 Mar 2026 21:03:02 +0700 Subject: [PATCH] fix: docker compose pids location + clear stale update banner - Move pids limit from service-level `pids_limit` to `deploy.resources.limits.pids` for Compose v5+ compatibility. Some Compose versions normalize both into the same field, causing "can't set distinct values" errors. - Clear OpenClaw update banner when `/api/openclaw/version` reports `updateAvailable: false`. Previously the banner could persist after a successful update because only the `true` path was handled. Closes #353, closes #351 --- docker-compose.yml | 2 +- src/app/[[...panel]]/page.tsx | 2 ++ src/lib/__tests__/docker-compose-schema.test.ts | 10 +++++----- 3 files changed, 8 insertions(+), 6 deletions(-) diff --git a/docker-compose.yml b/docker-compose.yml index 00e60b2..3e419e0 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -30,12 +30,12 @@ services: - NET_BIND_SERVICE security_opt: - no-new-privileges:true - pids_limit: 256 deploy: resources: limits: memory: 512M cpus: '1.0' + pids: 256 networks: - mc-net restart: unless-stopped diff --git a/src/app/[[...panel]]/page.tsx b/src/app/[[...panel]]/page.tsx index 51c4640..84da7f7 100644 --- a/src/app/[[...panel]]/page.tsx +++ b/src/app/[[...panel]]/page.tsx @@ -254,6 +254,8 @@ export default function Home() { releaseNotes: data.releaseNotes, updateCommand: data.updateCommand, }) + } else { + setOpenclawUpdate(null) } }) .catch(() => {}) diff --git a/src/lib/__tests__/docker-compose-schema.test.ts b/src/lib/__tests__/docker-compose-schema.test.ts index ad9525f..8a2ff10 100644 --- a/src/lib/__tests__/docker-compose-schema.test.ts +++ b/src/lib/__tests__/docker-compose-schema.test.ts @@ -12,13 +12,13 @@ const ROOT = resolve(__dirname, '../../..') describe('docker-compose.yml schema', () => { const content = readFileSync(resolve(ROOT, 'docker-compose.yml'), 'utf-8') - it('uses service-level pids_limit instead of deploy.resources.limits.pids', () => { - // pids_limit should be at service level (not nested inside deploy) - expect(content).toContain('pids_limit:') + it('uses deploy.resources.limits.pids (not service-level pids_limit)', () => { + // pids limit must be inside deploy.resources.limits for Compose v5+ compatibility. + // Service-level pids_limit causes "can't set distinct values" errors on some versions. + expect(content).not.toContain('pids_limit:') - // Should NOT have pids inside deploy.resources.limits const deployBlock = content.match(/deploy:[\s\S]*?(?=\n\s{4}\w|\nvolumes:|\nnetworks:)/)?.[0] ?? '' - expect(deployBlock).not.toContain('pids:') + expect(deployBlock).toContain('pids:') }) it('still has memory and cpus in deploy.resources.limits', () => {