From 9360aa25836989920335880c3e8da24ab40e0ec5 Mon Sep 17 00:00:00 2001 From: Vivek Yanamadula Date: Thu, 30 Jul 2026 14:21:29 -0400 Subject: [PATCH] =?UTF-8?q?=F0=9F=94=96=20Bump=20Rudder=20plugin=20to=200.?= =?UTF-8?q?1.4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: Codex Agent --- .claude-plugin/marketplace.json | 4 ++-- .claude-plugin/plugin.json | 2 +- .codex-plugin/plugin.json | 2 +- package-lock.json | 4 ++-- package.json | 2 +- test/skill-runtime.test.ts | 32 ++++++++++++++++++++++++-------- 6 files changed, 31 insertions(+), 15 deletions(-) diff --git a/.claude-plugin/marketplace.json b/.claude-plugin/marketplace.json index b486d25..36bd408 100644 --- a/.claude-plugin/marketplace.json +++ b/.claude-plugin/marketplace.json @@ -13,11 +13,11 @@ "source": { "source": "npm", "package": "@ruddercode/rudder-plugin", - "version": "0.1.3", + "version": "0.1.4", "registry": "https://registry.npmjs.org" }, "description": "Generate focused unit tests from coding-session intent and worktree changes using your existing coding agent.", - "version": "0.1.3", + "version": "0.1.4", "author": { "name": "RudderCode", "email": "vivek@archermoney.com" diff --git a/.claude-plugin/plugin.json b/.claude-plugin/plugin.json index e9d22a3..7712ae9 100644 --- a/.claude-plugin/plugin.json +++ b/.claude-plugin/plugin.json @@ -1,6 +1,6 @@ { "name": "rudder", - "version": "0.1.3", + "version": "0.1.4", "description": "Generate focused unit tests from coding-session intent and worktree changes using your existing coding agent.", "author": { "name": "Vivek Yanamadula", diff --git a/.codex-plugin/plugin.json b/.codex-plugin/plugin.json index 085f0bf..565067b 100644 --- a/.codex-plugin/plugin.json +++ b/.codex-plugin/plugin.json @@ -1,6 +1,6 @@ { "name": "rudder", - "version": "0.1.3", + "version": "0.1.4", "description": "Generate focused unit tests from coding-session intent and worktree changes using your existing coding agent.", "author": { "name": "Vivek Yanamadula", diff --git a/package-lock.json b/package-lock.json index 4f3bc92..f91d522 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "@ruddercode/rudder-plugin", - "version": "0.1.3", + "version": "0.1.4", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "@ruddercode/rudder-plugin", - "version": "0.1.3", + "version": "0.1.4", "license": "Apache-2.0", "devDependencies": { "@types/node": "^24", diff --git a/package.json b/package.json index b795b40..37fe258 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@ruddercode/rudder-plugin", - "version": "0.1.3", + "version": "0.1.4", "description": "Generate focused unit tests from coding-session intent and worktree changes.", "type": "module", "engines": { diff --git a/test/skill-runtime.test.ts b/test/skill-runtime.test.ts index 84aa462..421e5a0 100644 --- a/test/skill-runtime.test.ts +++ b/test/skill-runtime.test.ts @@ -56,6 +56,12 @@ const updateScriptUrl = new URL( '../skills/rudder/scripts/update.mjs', import.meta.url ); +const currentPackageVersion = ( + JSON.parse(readFileSync(join(pluginRoot, 'package.json'), 'utf8')) as { + version: string; + } +).version; +const newerPackageVersion = nextPatchVersion(currentPackageVersion); interface UpdateResult { currentVersion: string; @@ -85,6 +91,14 @@ let stateRoot: string; let rudderRunId: string; let originalRudderHome: string | undefined; +function nextPatchVersion(version: string): string { + const match = /^(0|[1-9]\d*)\.(0|[1-9]\d*)\.(0|[1-9]\d*)$/u.exec( + version + ); + assert.ok(match, `expected a stable semantic version, received ${version}`); + return `${match[1]}.${match[2]}.${Number(match[3]) + 1}`; +} + function git(...args: string[]): string { return execFileSync('git', ['-C', repo, ...args], { encoding: 'utf8', @@ -299,7 +313,7 @@ test('caches the latest registry version while reminders continue', async () => let fetchCount = 0; globalThis.fetch = async () => { fetchCount += 1; - return new Response(JSON.stringify({ version: '0.1.4' }), { + return new Response(JSON.stringify({ version: newerPackageVersion }), { status: 200, headers: { 'content-type': 'application/json' }, }); @@ -310,8 +324,8 @@ test('caches the latest registry version while reminders continue', async () => const { checkForUpdate } = await loadUpdateModule(); const discovered = await checkForUpdate({ force: true }); - assert.equal(discovered.currentVersion, '0.1.3'); - assert.equal(discovered.latestVersion, '0.1.4'); + assert.equal(discovered.currentVersion, currentPackageVersion); + assert.equal(discovered.latestVersion, newerPackageVersion); assert.equal(discovered.shouldNotify, true); assert.equal(discovered.source, 'registry'); @@ -327,7 +341,7 @@ test('caches the latest registry version while reminders continue', async () => }; assert.equal(state.schemaVersion, 1); assert.ok(Number.isFinite(Date.parse(state.lastCheckedAt))); - assert.equal(state.latestVersion, '0.1.4'); + assert.equal(state.latestVersion, newerPackageVersion); } finally { globalThis.fetch = originalFetch; rmSync(updateStatePath, { force: true }); @@ -346,7 +360,7 @@ test('uses stale cache or skips the prompt when registry data is unavailable', a JSON.stringify({ schemaVersion: 1, lastCheckedAt: '2000-01-01T00:00:00.000Z', - latestVersion: '0.1.4', + latestVersion: newerPackageVersion, }) ); globalThis.fetch = async () => { @@ -356,7 +370,7 @@ test('uses stale cache or skips the prompt when registry data is unavailable', a const { checkForUpdate } = await loadUpdateModule(); const staleCache = await checkForUpdate({ force: true }); - assert.equal(staleCache.latestVersion, '0.1.4'); + assert.equal(staleCache.latestVersion, newerPackageVersion); assert.equal(staleCache.shouldNotify, true); assert.equal(staleCache.source, 'stale-cache'); const stateAfterFailure = JSON.parse( @@ -366,7 +380,7 @@ test('uses stale cache or skips the prompt when registry data is unavailable', a latestVersion: string; }; assert.equal(stateAfterFailure.lastCheckedAt, '2000-01-01T00:00:00.000Z'); - assert.equal(stateAfterFailure.latestVersion, '0.1.4'); + assert.equal(stateAfterFailure.latestVersion, newerPackageVersion); rmSync(updateStatePath, { force: true }); globalThis.fetch = async () => @@ -463,7 +477,9 @@ test('retries a failed update twice without blocking the flow', async () => { ); chmodSync(executable, 0o755); globalThis.fetch = async () => - new Response(JSON.stringify({ version: '0.1.4' }), { status: 200 }); + new Response(JSON.stringify({ version: newerPackageVersion }), { + status: 200, + }); process.env.PATH = `${fakeBin}:${originalPath ?? ''}`; process.env.RUDDER_TEST_COMMAND_LOG = commandLog;