ccgather 1.3.0 → 1.3.2

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.
Files changed (2) hide show
  1. package/dist/index.js +34 -12
  2. package/package.json +4 -2
package/dist/index.js CHANGED
@@ -334,7 +334,9 @@ async function sync(options) {
334
334
  }
335
335
  if (!isClaudeCodeInstalled()) {
336
336
  console.log(import_chalk4.default.yellow("\u26A0\uFE0F Claude Code installation not detected."));
337
- console.log(import_chalk4.default.gray("Make sure Claude Code is installed and has been used at least once.\n"));
337
+ console.log(
338
+ import_chalk4.default.gray("Make sure Claude Code is installed and has been used at least once.\n")
339
+ );
338
340
  if (process.env.CCGATHER_DEMO === "true") {
339
341
  console.log(import_chalk4.default.gray("Demo mode: Using mock data..."));
340
342
  } else {
@@ -385,7 +387,9 @@ async function sync(options) {
385
387
  console.log(import_chalk4.default.bold("\u{1F4CA} Your Stats"));
386
388
  console.log(import_chalk4.default.gray("\u2500".repeat(40)));
387
389
  console.log(` ${import_chalk4.default.gray("Tokens:")} ${import_chalk4.default.white(formatNumber2(usageData.totalTokens))}`);
388
- console.log(` ${import_chalk4.default.gray("Spent:")} ${import_chalk4.default.green("$" + usageData.totalSpent.toFixed(2))}`);
390
+ console.log(
391
+ ` ${import_chalk4.default.gray("Spent:")} ${import_chalk4.default.green("$" + usageData.totalSpent.toFixed(2))}`
392
+ );
389
393
  console.log(` ${import_chalk4.default.gray("Rank:")} ${import_chalk4.default.yellow("#" + result.data?.rank)}`);
390
394
  if (options.verbose) {
391
395
  console.log("\n" + import_chalk4.default.gray("Model Breakdown:"));
@@ -395,7 +399,7 @@ async function sync(options) {
395
399
  }
396
400
  }
397
401
  console.log(import_chalk4.default.gray("\u2500".repeat(40)));
398
- console.log(import_chalk4.default.gray("\nView full leaderboard: https://ccgather.dev/leaderboard\n"));
402
+ console.log(import_chalk4.default.gray("\nView full leaderboard: https://ccgather.com/leaderboard\n"));
399
403
  }
400
404
  var import_chalk4, import_ora6;
401
405
  var init_sync = __esm({
@@ -555,6 +559,7 @@ var init_auth = __esm({
555
559
  var import_commander = require("commander");
556
560
  var import_inquirer3 = __toESM(require("inquirer"));
557
561
  var import_chalk6 = __toESM(require("chalk"));
562
+ var import_update_notifier = __toESM(require("update-notifier"));
558
563
 
559
564
  // src/commands/submit.ts
560
565
  var import_ora = __toESM(require("ora"));
@@ -887,7 +892,7 @@ var LOGO_COMPACT = `
887
892
  var TAGLINE = colors.muted(" Where Claude Code Developers Gather");
888
893
  var SLOGAN = colors.dim(" Gather. Compete. Rise.");
889
894
  function getVersionLine(version) {
890
- return colors.dim(` v${version} \u2022 ccgather.dev`);
895
+ return colors.dim(` v${version} \u2022 ccgather.com`);
891
896
  }
892
897
  var box = {
893
898
  topLeft: "\u250C",
@@ -1326,7 +1331,7 @@ async function status(options) {
1326
1331
  }
1327
1332
  console.log();
1328
1333
  console.log(colors.dim(" \u2500".repeat(25)));
1329
- console.log(` ${colors.muted("View leaderboard:")} ${link("https://ccgather.dev/leaderboard")}`);
1334
+ console.log(` ${colors.muted("View leaderboard:")} ${link("https://ccgather.com/leaderboard")}`);
1330
1335
  console.log();
1331
1336
  }
1332
1337
 
@@ -1404,10 +1409,13 @@ function createCallbackServer() {
1404
1409
  server.on("error", (err) => {
1405
1410
  reject(new Error(`Failed to start callback server: ${err.message}`));
1406
1411
  });
1407
- setTimeout(() => {
1408
- server.close();
1409
- reject(new Error("Authentication timed out"));
1410
- }, 5 * 60 * 1e3);
1412
+ setTimeout(
1413
+ () => {
1414
+ server.close();
1415
+ reject(new Error("Authentication timed out"));
1416
+ },
1417
+ 5 * 60 * 1e3
1418
+ );
1411
1419
  });
1412
1420
  }
1413
1421
  function generateSyncScript(apiUrl, apiToken) {
@@ -1625,7 +1633,9 @@ async function setupAuto(options = {}) {
1625
1633
  console.log(import_chalk3.default.gray("This will install a hook that automatically syncs"));
1626
1634
  console.log(import_chalk3.default.gray("your usage data when Claude Code sessions end."));
1627
1635
  console.log();
1628
- console.log(import_chalk3.default.yellow("Note: Manual submission (`npx ccgather`) is recommended for most users."));
1636
+ console.log(
1637
+ import_chalk3.default.yellow("Note: Manual submission (`npx ccgather`) is recommended for most users.")
1638
+ );
1629
1639
  console.log();
1630
1640
  const inquirer4 = await import("inquirer");
1631
1641
  const { proceed } = await inquirer4.default.prompt([
@@ -1704,7 +1714,7 @@ async function setupAuto(options = {}) {
1704
1714
  console.log(import_chalk3.default.cyan(" npx ccgather status"));
1705
1715
  console.log();
1706
1716
  console.log(import_chalk3.default.gray("View the leaderboard:"));
1707
- console.log(import_chalk3.default.cyan(" https://ccgather.dev/leaderboard"));
1717
+ console.log(import_chalk3.default.cyan(" https://ccgather.com/leaderboard"));
1708
1718
  console.log();
1709
1719
  } catch (err) {
1710
1720
  spinner.fail(import_chalk3.default.red("Authentication failed"));
@@ -1835,7 +1845,19 @@ async function scan(options = {}) {
1835
1845
  // src/index.ts
1836
1846
  init_config();
1837
1847
  init_api();
1838
- var VERSION = "1.2.1";
1848
+ var VERSION = "1.3.2";
1849
+ var pkg = { name: "ccgather", version: VERSION };
1850
+ var notifier = (0, import_update_notifier.default)({ pkg, updateCheckInterval: 1e3 * 60 * 60 });
1851
+ notifier.notify({
1852
+ message: `${import_chalk6.default.yellow("Update")} available ${import_chalk6.default.dim(VERSION)} \u2192 ${import_chalk6.default.yellow(notifier.update?.latest || "")}
1853
+ ${import_chalk6.default.yellow("Run")} ${import_chalk6.default.cyan("npx ccgather@latest")} to update`,
1854
+ boxenOptions: {
1855
+ padding: 1,
1856
+ margin: 1,
1857
+ borderStyle: "round",
1858
+ borderColor: "yellow"
1859
+ }
1860
+ });
1839
1861
  var program = new import_commander.Command();
1840
1862
  program.name("ccgather").description("Submit your Claude Code usage to the CCgather leaderboard").version(VERSION).option("-y, --yes", "Skip confirmation prompt").option("--auto", "Enable automatic sync on session end").option("--manual", "Disable automatic sync").option("--no-menu", "Skip interactive menu (direct submit)");
1841
1863
  program.command("scan").description("Scan Claude Code usage and create ccgather.json").option("-a, --all", "Scan all-time usage (no date limit)").option("-d, --days <number>", "Number of days to scan (default: 30)", parseInt).action((opts) => scan(opts));
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "ccgather",
3
- "version": "1.3.0",
3
+ "version": "1.3.2",
4
4
  "description": "CLI tool for syncing Claude Code usage data to CCgather leaderboard",
5
5
  "bin": {
6
6
  "ccgather": "dist/index.js",
@@ -30,11 +30,13 @@
30
30
  "conf": "^13.0.1",
31
31
  "inquirer": "^10.2.2",
32
32
  "open": "^10.1.0",
33
- "ora": "^8.1.0"
33
+ "ora": "^8.1.0",
34
+ "update-notifier": "^7.3.1"
34
35
  },
35
36
  "devDependencies": {
36
37
  "@types/inquirer": "^9.0.7",
37
38
  "@types/node": "^22.10.2",
39
+ "@types/update-notifier": "^6.0.8",
38
40
  "tsup": "^8.3.5",
39
41
  "typescript": "^5.7.2"
40
42
  },