Skip to content

Commit ee108b0

Browse files
ithiria894claude
andcommitted
feat: add update check on startup
Non-blocking check against npm registry — shows update prompt if a newer version exists. 3s timeout, silent on failure. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
1 parent 47778eb commit ee108b0

3 files changed

Lines changed: 26 additions & 3 deletions

File tree

package-lock.json

Lines changed: 2 additions & 2 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "@mcpware/claude-code-organizer",
3-
"version": "0.5.7",
3+
"version": "0.5.8",
44
"description": "Organize all your Claude Code memories, skills, MCP servers, commands, agents, rules, and hooks — view by scope hierarchy, move between scopes via drag-and-drop",
55
"type": "module",
66
"bin": {

src/server.mjs

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,9 +8,30 @@ import { createServer } from "node:http";
88
import { readFile } from "node:fs/promises";
99
import { join, extname, resolve } from "node:path";
1010
import { homedir } from "node:os";
11+
import { createRequire } from "node:module";
12+
import https from "node:https";
1113
import { scan } from "./scanner.mjs";
1214
import { moveItem, deleteItem, getValidDestinations } from "./mover.mjs";
1315

16+
// ── Update check ─────────────────────────────────────────────────────
17+
async function checkForUpdate() {
18+
const require = createRequire(import.meta.url);
19+
const { version: local } = require("../package.json");
20+
const data = await new Promise((resolve, reject) => {
21+
const req = https.get("https://registry.npmjs.org/@mcpware/claude-code-organizer/latest", { timeout: 3000 }, (res) => {
22+
let body = "";
23+
res.on("data", (c) => (body += c));
24+
res.on("end", () => resolve(body));
25+
});
26+
req.on("error", reject);
27+
req.on("timeout", () => { req.destroy(); reject(new Error("timeout")); });
28+
});
29+
const { version: latest } = JSON.parse(data);
30+
if (latest && latest !== local) {
31+
console.log(`\uD83D\uDCE6 Update available: ${local} \u2192 ${latest} Run: npm update -g @mcpware/claude-code-organizer\n`);
32+
}
33+
}
34+
1435
// ── Path safety ──────────────────────────────────────────────────────
1536

1637
const HOME = homedir();
@@ -372,6 +393,8 @@ export function startServer(port = 3847, maxRetries = 10) {
372393
console.log(`This is my first open-source project. If it helped you, a star would make my week:`);
373394
console.log(`\u2B50 https://github.com/mcpware/claude-code-organizer`);
374395
console.log(`\uD83D\uDCEC Bugs, ideas, or just wanna say hi? https://github.com/mcpware/claude-code-organizer/issues \u2014 I fix things same day, I promise\n`);
396+
// Non-blocking update check
397+
checkForUpdate().catch(() => {});
375398
});
376399
}
377400

0 commit comments

Comments
 (0)