fleetlens 0.16.7 → 0.16.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.
Files changed (120) hide show
  1. package/app/apps/web/.next/BUILD_ID +1 -1
  2. package/app/apps/web/.next/build-manifest.json +3 -3
  3. package/app/apps/web/.next/prerender-manifest.json +3 -3
  4. package/app/apps/web/.next/server/app/_global-error.html +1 -1
  5. package/app/apps/web/.next/server/app/_global-error.rsc +1 -1
  6. package/app/apps/web/.next/server/app/_global-error.segments/__PAGE__.segment.rsc +1 -1
  7. package/app/apps/web/.next/server/app/_global-error.segments/_full.segment.rsc +1 -1
  8. package/app/apps/web/.next/server/app/_global-error.segments/_head.segment.rsc +1 -1
  9. package/app/apps/web/.next/server/app/_global-error.segments/_index.segment.rsc +1 -1
  10. package/app/apps/web/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -1
  11. package/app/apps/web/.next/server/app/_not-found/page.js.nft.json +1 -1
  12. package/app/apps/web/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
  13. package/app/apps/web/.next/server/app/agent/page.js.nft.json +1 -1
  14. package/app/apps/web/.next/server/app/agent/page_client-reference-manifest.js +1 -1
  15. package/app/apps/web/.next/server/app/api/agent/chats/[id]/messages/route.js.nft.json +1 -1
  16. package/app/apps/web/.next/server/app/api/agent/index/route.js.nft.json +1 -1
  17. package/app/apps/web/.next/server/app/api/agent/mcp/route.js.nft.json +1 -1
  18. package/app/apps/web/.next/server/app/api/agent/suggestions/route.js.nft.json +1 -1
  19. package/app/apps/web/.next/server/app/api/ask/route.js.nft.json +1 -1
  20. package/app/apps/web/.next/server/app/api/digest/day/[date]/route.js.nft.json +1 -1
  21. package/app/apps/web/.next/server/app/api/digest/month/[yearMonth]/route.js.nft.json +1 -1
  22. package/app/apps/web/.next/server/app/api/digest/month-index/route.js.nft.json +1 -1
  23. package/app/apps/web/.next/server/app/api/digest/week/[startDate]/route.js.nft.json +1 -1
  24. package/app/apps/web/.next/server/app/api/digest/week-index/route.js.nft.json +1 -1
  25. package/app/apps/web/.next/server/app/api/events/route.js +1 -1
  26. package/app/apps/web/.next/server/app/api/events/route.js.nft.json +1 -1
  27. package/app/apps/web/.next/server/app/api/pdf/[key]/route.js +1 -1
  28. package/app/apps/web/.next/server/app/api/pdf/[key]/route.js.nft.json +1 -1
  29. package/app/apps/web/.next/server/app/api/projects/open-folder/route.js.nft.json +1 -1
  30. package/app/apps/web/.next/server/app/api/runs/[runId]/route.js.nft.json +1 -1
  31. package/app/apps/web/.next/server/app/api/runs/[runId]/stream/route.js.nft.json +1 -1
  32. package/app/apps/web/.next/server/app/api/settings/credentials/route.js.nft.json +1 -1
  33. package/app/apps/web/.next/server/app/api/settings/route.js.nft.json +1 -1
  34. package/app/apps/web/.next/server/app/changelog/page.js.nft.json +1 -1
  35. package/app/apps/web/.next/server/app/changelog/page_client-reference-manifest.js +1 -1
  36. package/app/apps/web/.next/server/app/day/[date]/page.js.nft.json +1 -1
  37. package/app/apps/web/.next/server/app/day/[date]/page_client-reference-manifest.js +1 -1
  38. package/app/apps/web/.next/server/app/day/page.js.nft.json +1 -1
  39. package/app/apps/web/.next/server/app/day/page_client-reference-manifest.js +1 -1
  40. package/app/apps/web/.next/server/app/digest/[date]/page.js.nft.json +1 -1
  41. package/app/apps/web/.next/server/app/digest/[date]/page_client-reference-manifest.js +1 -1
  42. package/app/apps/web/.next/server/app/digest/page.js.nft.json +1 -1
  43. package/app/apps/web/.next/server/app/digest/page_client-reference-manifest.js +1 -1
  44. package/app/apps/web/.next/server/app/insights/[key]/page.js.nft.json +1 -1
  45. package/app/apps/web/.next/server/app/insights/[key]/page_client-reference-manifest.js +1 -1
  46. package/app/apps/web/.next/server/app/insights/page.js.nft.json +1 -1
  47. package/app/apps/web/.next/server/app/insights/page_client-reference-manifest.js +1 -1
  48. package/app/apps/web/.next/server/app/page.js.nft.json +1 -1
  49. package/app/apps/web/.next/server/app/page_client-reference-manifest.js +1 -1
  50. package/app/apps/web/.next/server/app/parallelism/page.js.nft.json +1 -1
  51. package/app/apps/web/.next/server/app/parallelism/page_client-reference-manifest.js +1 -1
  52. package/app/apps/web/.next/server/app/print/[key]/page.js.nft.json +1 -1
  53. package/app/apps/web/.next/server/app/print/[key]/page_client-reference-manifest.js +1 -1
  54. package/app/apps/web/.next/server/app/projects/[slug]/page.js.nft.json +1 -1
  55. package/app/apps/web/.next/server/app/projects/[slug]/page_client-reference-manifest.js +1 -1
  56. package/app/apps/web/.next/server/app/projects/page.js.nft.json +1 -1
  57. package/app/apps/web/.next/server/app/projects/page_client-reference-manifest.js +1 -1
  58. package/app/apps/web/.next/server/app/runs/page.js.nft.json +1 -1
  59. package/app/apps/web/.next/server/app/runs/page_client-reference-manifest.js +1 -1
  60. package/app/apps/web/.next/server/app/sessions/[id]/page.js.nft.json +1 -1
  61. package/app/apps/web/.next/server/app/sessions/[id]/page_client-reference-manifest.js +1 -1
  62. package/app/apps/web/.next/server/app/sessions/page.js.nft.json +1 -1
  63. package/app/apps/web/.next/server/app/sessions/page_client-reference-manifest.js +1 -1
  64. package/app/apps/web/.next/server/app/settings/page.js.nft.json +1 -1
  65. package/app/apps/web/.next/server/app/settings/page_client-reference-manifest.js +1 -1
  66. package/app/apps/web/.next/server/app/team/onboarding/page.js.nft.json +1 -1
  67. package/app/apps/web/.next/server/app/team/onboarding/page_client-reference-manifest.js +1 -1
  68. package/app/apps/web/.next/server/app/team/page.js.nft.json +1 -1
  69. package/app/apps/web/.next/server/app/team/page_client-reference-manifest.js +1 -1
  70. package/app/apps/web/.next/server/app/usage/page.js.nft.json +1 -1
  71. package/app/apps/web/.next/server/app/usage/page_client-reference-manifest.js +1 -1
  72. package/app/apps/web/.next/server/chunks/{[externals]__0rv9ct5._.js → [externals]__0vj7dsg._.js} +2 -2
  73. package/app/apps/web/.next/server/chunks/[root-of-the-server]__02petpy._.js +3 -0
  74. package/app/apps/web/.next/server/chunks/[root-of-the-server]__0_nle98._.js +1 -1
  75. package/app/apps/web/.next/server/chunks/node_modules_next_dist_esm_build_templates_app-route_02bw8.n.js +2 -2
  76. package/app/apps/web/.next/server/chunks/node_modules_next_dist_esm_build_templates_app-route_0sr4wr_.js +1 -1
  77. package/app/apps/web/.next/server/chunks/ssr/[root-of-the-server]__01wj6p0._.js +1 -1
  78. package/app/apps/web/.next/server/chunks/ssr/_0k8yioi._.js +1 -1
  79. package/app/apps/web/.next/server/chunks/ssr/apps_web_0epqfet._.js +1 -1
  80. package/app/apps/web/.next/server/chunks/ssr/apps_web_0~aj0~u._.js +1 -1
  81. package/app/apps/web/.next/server/chunks/ssr/apps_web_lib_changelog_ts_0n7_p1d._.js +1 -1
  82. package/app/apps/web/.next/server/chunks/ssr/apps_web_lib_changelog_ts_0nb5_-s._.js +1 -1
  83. package/app/apps/web/.next/server/middleware-build-manifest.js +3 -3
  84. package/app/apps/web/.next/server/middleware-manifest.json +5 -5
  85. package/app/apps/web/.next/server/pages/500.html +1 -1
  86. package/app/apps/web/.next/server/server-reference-manifest.js +1 -1
  87. package/app/apps/web/.next/server/server-reference-manifest.json +1 -1
  88. package/app/apps/web/.next/static/chunks/{0~opjw4gew2-w.js → 0e0bk6.-dirdy.js} +1 -1
  89. package/app/apps/web/.next/static/chunks/0i0ydeh8ks76..js +14 -0
  90. package/app/apps/web/app/api/events/route.ts +2 -0
  91. package/app/apps/web/app/settings/page.tsx +1 -1
  92. package/app/apps/web/app/usage/page.tsx +44 -34
  93. package/app/apps/web/components/menubar-install.tsx +1 -1
  94. package/app/apps/web/lib/changelog-data.generated.ts +1 -1
  95. package/app/apps/web/lib/daemon-lifecycle.test.ts +62 -0
  96. package/app/apps/web/lib/daemon-lifecycle.ts +50 -0
  97. package/app/apps/web/lib/menubar-data.ts +1 -1
  98. package/app/apps/web/lib/usage-data.ts +2 -0
  99. package/app/apps/web/lib/usage-display.test.ts +79 -0
  100. package/app/apps/web/lib/usage-display.ts +59 -0
  101. package/app/apps/web/package.json +1 -1
  102. package/app/apps/web/tsconfig.tsbuildinfo +1 -1
  103. package/dist/daemon-worker.js +4 -4
  104. package/dist/index.js +44 -26
  105. package/menubar/{FleetlensMenubar.app → Fleetlens.app}/Contents/Info.plist +4 -4
  106. package/menubar/Fleetlens.app/Contents/MacOS/FleetlensMenubar +0 -0
  107. package/menubar/Fleetlens.app/Contents/Resources/Fleetlens.icns +0 -0
  108. package/menubar/Fleetlens.app/Contents/Resources/fleetlens-mark.svg +7 -0
  109. package/menubar/{FleetlensMenubar.app → Fleetlens.app}/Contents/_CodeSignature/CodeResources +22 -0
  110. package/package.json +1 -1
  111. package/app/apps/web/.next/server/chunks/[root-of-the-server]__123tfcb._.js +0 -3
  112. package/app/apps/web/.next/static/chunks/0guxw7.w8n21l.js +0 -14
  113. package/menubar/FleetlensMenubar.app/Contents/MacOS/FleetlensMenubar +0 -0
  114. /package/app/apps/web/.next/static/{Zna-9B0LUDyz-sTA_YAsM → pyul3PDbGo5QnjdZr6ZIg}/_buildManifest.js +0 -0
  115. /package/app/apps/web/.next/static/{Zna-9B0LUDyz-sTA_YAsM → pyul3PDbGo5QnjdZr6ZIg}/_clientMiddlewareManifest.js +0 -0
  116. /package/app/apps/web/.next/static/{Zna-9B0LUDyz-sTA_YAsM → pyul3PDbGo5QnjdZr6ZIg}/_ssgManifest.js +0 -0
  117. /package/menubar/{FleetlensMenubar.app → Fleetlens.app}/Contents/Resources/claude.svg +0 -0
  118. /package/menubar/{FleetlensMenubar.app → Fleetlens.app}/Contents/Resources/codex.svg +0 -0
  119. /package/menubar/{FleetlensMenubar.app → Fleetlens.app}/Contents/Resources/grok.svg +0 -0
  120. /package/menubar/{FleetlensMenubar.app → Fleetlens.app}/Contents/Resources/zai.svg +0 -0
@@ -9104,7 +9104,7 @@ function buildIngestPayload(inputs) {
9104
9104
  return {
9105
9105
  ingestId: randomUUID(),
9106
9106
  observedAt: (/* @__PURE__ */ new Date()).toISOString(),
9107
- cliVersion: "0.16.7",
9107
+ cliVersion: "0.16.9",
9108
9108
  ...richRollup || inputs.enrichedExtras || inputs.artifactSignals ? { schemaVersion: RICH_ROLLUP_SCHEMA_VERSION } : {},
9109
9109
  ...inputs.rollup ? { dailyRollup: inputs.rollup } : {},
9110
9110
  ...richRollup ? { richRollup } : {},
@@ -18038,14 +18038,14 @@ async function getUpdateAvailability() {
18038
18038
  if (isDevMode()) return null;
18039
18039
  const latest = await fetchLatestVersion();
18040
18040
  if (latest === null) return {
18041
- current: "0.16.7",
18041
+ current: "0.16.9",
18042
18042
  latest: null,
18043
18043
  updateAvailable: false
18044
18044
  };
18045
18045
  return {
18046
- current: "0.16.7",
18046
+ current: "0.16.9",
18047
18047
  latest,
18048
- updateAvailable: shouldUpdate("0.16.7", latest)
18048
+ updateAvailable: shouldUpdate("0.16.9", latest)
18049
18049
  };
18050
18050
  }
18051
18051
 
package/dist/index.js CHANGED
@@ -6241,9 +6241,9 @@ function onDiskVersion() {
6241
6241
  try {
6242
6242
  const here = dirname3(fileURLToPath(import.meta.url));
6243
6243
  const pkg = JSON.parse(readFileSync5(join3(here, "..", "package.json"), "utf8"));
6244
- return pkg.version ?? "0.16.7";
6244
+ return pkg.version ?? "0.16.9";
6245
6245
  } catch {
6246
- return "0.16.7";
6246
+ return "0.16.9";
6247
6247
  }
6248
6248
  }
6249
6249
  function getServerStatus() {
@@ -6255,7 +6255,7 @@ function getServerStatus() {
6255
6255
  return { running: false };
6256
6256
  }
6257
6257
  function isServerStale(status2) {
6258
- return status2.running === true && status2.version !== "0.16.7";
6258
+ return status2.running === true && status2.version !== "0.16.9";
6259
6259
  }
6260
6260
  async function ensureCurrentServer(opts = {}) {
6261
6261
  const status2 = getServerStatus();
@@ -6263,7 +6263,7 @@ async function ensureCurrentServer(opts = {}) {
6263
6263
  return { pid: status2.pid, port: status2.port, restarted: false };
6264
6264
  }
6265
6265
  if (!status2.running) {
6266
- const result = await startServer({ port: opts.port });
6266
+ const result = await startServer(opts);
6267
6267
  return { ...result, restarted: false };
6268
6268
  }
6269
6269
  const previousVersion = status2.version;
@@ -6279,7 +6279,7 @@ async function ensureCurrentServer(opts = {}) {
6279
6279
  await waitForPortFree(port, 3e3);
6280
6280
  }
6281
6281
  try {
6282
- const result = await startServer({ port });
6282
+ const result = await startServer({ port, autoStartDaemon: opts.autoStartDaemon });
6283
6283
  return { ...result, restarted: true, previousVersion };
6284
6284
  } catch (err) {
6285
6285
  if (isProcessAlive(oldPid, SERVER_MARKERS)) writePid(PID_FILE, oldPid, port, previousVersion);
@@ -6305,7 +6305,8 @@ async function startServer(opts = {}) {
6305
6305
  PORT: String(port),
6306
6306
  HOSTNAME: "localhost",
6307
6307
  CCLENS_DATA_DIR: dataDir,
6308
- FLEETLENS_CLI_BIN: cliBinRealPath()
6308
+ FLEETLENS_CLI_BIN: cliBinRealPath(),
6309
+ FLEETLENS_WEB_START_DAEMON: opts.autoStartDaemon === false ? "0" : "1"
6309
6310
  },
6310
6311
  cwd: appDir()
6311
6312
  });
@@ -6694,9 +6695,9 @@ Installed: ${PACKAGE_NAME}@${verify.installedVersion} at ${verify.installedPath
6694
6695
  console.warn(
6695
6696
  ` \u2022 reinstall in the correct Node env: 'npm install -g ${PACKAGE_NAME}@latest'`
6696
6697
  );
6697
- } else if (verify.installedVersion !== "0.16.7") {
6698
+ } else if (verify.installedVersion !== "0.16.9") {
6698
6699
  console.log(
6699
- ` \u2192 This process is still running ${"0.16.7"}. Next invocation will use ${verify.installedVersion}.`
6700
+ ` \u2192 This process is still running ${"0.16.9"}. Next invocation will use ${verify.installedVersion}.`
6700
6701
  );
6701
6702
  }
6702
6703
  }
@@ -6731,14 +6732,14 @@ async function getUpdateAvailability() {
6731
6732
  if (isDevMode()) return null;
6732
6733
  const latest = await fetchLatestVersion();
6733
6734
  if (latest === null) return {
6734
- current: "0.16.7",
6735
+ current: "0.16.9",
6735
6736
  latest: null,
6736
6737
  updateAvailable: false
6737
6738
  };
6738
6739
  return {
6739
- current: "0.16.7",
6740
+ current: "0.16.9",
6740
6741
  latest,
6741
- updateAvailable: shouldUpdate("0.16.7", latest)
6742
+ updateAvailable: shouldUpdate("0.16.9", latest)
6742
6743
  };
6743
6744
  }
6744
6745
  async function checkForUpdate() {
@@ -6828,7 +6829,7 @@ async function restartServices(state) {
6828
6829
  }
6829
6830
  async function forceUpdate() {
6830
6831
  const latest = await fetchLatestVersion();
6831
- const current = "0.16.7";
6832
+ const current = "0.16.9";
6832
6833
  if (latest === null) {
6833
6834
  console.error("Could not reach npm registry. Check your network.");
6834
6835
  process.exit(1);
@@ -7147,7 +7148,7 @@ async function start(args2) {
7147
7148
  let serverPid;
7148
7149
  try {
7149
7150
  console.log("Starting Fleetlens...");
7150
- const result = await ensureCurrentServer({ port });
7151
+ const result = await ensureCurrentServer({ port, autoStartDaemon: !noDaemon });
7151
7152
  serverUrl = `http://localhost:${result.port}`;
7152
7153
  serverPid = result.pid;
7153
7154
  if (result.restarted) {
@@ -7241,7 +7242,7 @@ async function status() {
7241
7242
  console.log(`Server: running on ${url} (PID ${server.pid}, v${ver})`);
7242
7243
  if (isServerStale(server)) {
7243
7244
  console.log(
7244
- ` \u26A0 serving stale ${ver} (CLI is ${"0.16.7"}) \u2014 run 'fleetlens start' to restart on the current version`
7245
+ ` \u26A0 serving stale ${ver} (CLI is ${"0.16.9"}) \u2014 run 'fleetlens start' to restart on the current version`
7245
7246
  );
7246
7247
  }
7247
7248
  } else {
@@ -19442,6 +19443,9 @@ function writeCliLaunchFile() {
19442
19443
  function installedAppPath() {
19443
19444
  return join13(homedir6(), "Applications", APP_BUNDLE);
19444
19445
  }
19446
+ function legacyInstalledAppPath() {
19447
+ return join13(homedir6(), "Applications", LEGACY_APP_BUNDLE);
19448
+ }
19445
19449
  async function isRunning() {
19446
19450
  try {
19447
19451
  const { stdout } = await execFileAsync2("pgrep", ["-x", BUNDLE_EXEC]);
@@ -19461,11 +19465,18 @@ async function quitApp() {
19461
19465
  await execFileAsync2("pkill", ["-x", BUNDLE_EXEC]).catch(() => {
19462
19466
  });
19463
19467
  }
19464
- async function setLoginItem(enabled, appPath) {
19465
- const script = enabled ? `tell application "System Events" to make login item at end with properties {path:"${appPath}", hidden:false}` : `tell application "System Events" to delete login item "${APP_BUNDLE.replace(".app", "")}"`;
19468
+ async function addLoginItem(appPath) {
19469
+ const script = `tell application "System Events" to make login item at end with properties {path:"${appPath}", hidden:false}`;
19466
19470
  await execFileAsync2("osascript", ["-e", script]).catch(() => {
19467
19471
  });
19468
19472
  }
19473
+ async function removeLoginItem(name) {
19474
+ await execFileAsync2("osascript", [
19475
+ "-e",
19476
+ `tell application "System Events" to delete login item "${name}"`
19477
+ ]).catch(() => {
19478
+ });
19479
+ }
19469
19480
  async function installMenubar(opts) {
19470
19481
  if (!isMac2()) {
19471
19482
  console.log(NON_MAC_MSG2);
@@ -19475,7 +19486,7 @@ async function installMenubar(opts) {
19475
19486
  if (!existsSync19(src)) {
19476
19487
  console.error(
19477
19488
  `Bundled widget not found at ${src}.
19478
- This install was probably built without the menubar artifact. Run \`node apps/menubar/build-app.sh && cp -R apps/menubar/dist/FleetlensMenubar.app packages/cli/menubar/\` and rebuild.`
19489
+ This install was probably built without the menubar artifact. Run \`bash apps/menubar/build-app.sh && cp -R apps/menubar/dist/Fleetlens.app packages/cli/menubar/\` and rebuild.`
19479
19490
  );
19480
19491
  process.exit(1);
19481
19492
  }
@@ -19488,11 +19499,14 @@ This install was probably built without the menubar artifact. Run \`node apps/me
19488
19499
  await new Promise((r) => setTimeout(r, 400));
19489
19500
  }
19490
19501
  rmSync2(dest, { recursive: true, force: true });
19502
+ rmSync2(legacyInstalledAppPath(), { recursive: true, force: true });
19491
19503
  cpSync(src, dest, { recursive: true });
19492
19504
  writeCliLaunchFile();
19493
19505
  console.log(`Installed \u2192 ${dest}`);
19506
+ await removeLoginItem(APP_BUNDLE.replace(".app", ""));
19507
+ await removeLoginItem(LEGACY_APP_BUNDLE.replace(".app", ""));
19494
19508
  if (opts.login) {
19495
- await setLoginItem(true, dest);
19509
+ await addLoginItem(dest);
19496
19510
  console.log("Login item enabled (launches at login).");
19497
19511
  }
19498
19512
  if (opts.open) {
@@ -19507,7 +19521,8 @@ async function uninstallMenubar() {
19507
19521
  console.log(NON_MAC_MSG2);
19508
19522
  return;
19509
19523
  }
19510
- await setLoginItem(false, installedAppPath());
19524
+ await removeLoginItem(APP_BUNDLE.replace(".app", ""));
19525
+ await removeLoginItem(LEGACY_APP_BUNDLE.replace(".app", ""));
19511
19526
  if (await isRunning()) {
19512
19527
  console.log("Quitting the running widget\u2026");
19513
19528
  await quitApp();
@@ -19520,6 +19535,7 @@ async function uninstallMenubar() {
19520
19535
  } else {
19521
19536
  console.log("Widget is not installed \u2014 nothing to remove.");
19522
19537
  }
19538
+ rmSync2(legacyInstalledAppPath(), { recursive: true, force: true });
19523
19539
  console.log("Login item cleared (if it was set).");
19524
19540
  }
19525
19541
  async function openMenubar() {
@@ -19604,8 +19620,9 @@ async function menubar(args2) {
19604
19620
  status Show install/running/bundled state.
19605
19621
 
19606
19622
  The widget tails ~/.cclens/usage.jsonl and shows live Claude Code / Codex
19607
- plan utilization in the menu bar. Click it for a popover, or "Dashboard" to
19608
- open http://localhost:3321.`);
19623
+ plan utilization in the menu bar. It starts the usage daemon when launched
19624
+ and re-checks it whenever you open the popover or usage data becomes more
19625
+ than five minutes stale. Click "Dashboard" to open http://localhost:3321.`);
19609
19626
  break;
19610
19627
  default:
19611
19628
  console.error(
@@ -19615,13 +19632,14 @@ Usage: fleetlens menubar <install|uninstall|open|stop|status>`
19615
19632
  process.exit(1);
19616
19633
  }
19617
19634
  }
19618
- var execFileAsync2, APP_BUNDLE, BUNDLE_EXEC, NON_MAC_MSG2;
19635
+ var execFileAsync2, APP_BUNDLE, LEGACY_APP_BUNDLE, BUNDLE_EXEC, NON_MAC_MSG2;
19619
19636
  var init_menubar = __esm({
19620
19637
  "src/commands/menubar.ts"() {
19621
19638
  "use strict";
19622
19639
  init_fs();
19623
19640
  execFileAsync2 = promisify2(execFile2);
19624
- APP_BUNDLE = "FleetlensMenubar.app";
19641
+ APP_BUNDLE = "Fleetlens.app";
19642
+ LEGACY_APP_BUNDLE = "FleetlensMenubar.app";
19625
19643
  BUNDLE_EXEC = "FleetlensMenubar";
19626
19644
  NON_MAC_MSG2 = "The Fleetlens menu bar widget is a native macOS app and is macOS-only. On Linux/Windows, keep using the dashboard at the printed URL.";
19627
19645
  }
@@ -19911,7 +19929,7 @@ function buildIngestPayload(inputs) {
19911
19929
  return {
19912
19930
  ingestId: randomUUID2(),
19913
19931
  observedAt: (/* @__PURE__ */ new Date()).toISOString(),
19914
- cliVersion: "0.16.7",
19932
+ cliVersion: "0.16.9",
19915
19933
  ...richRollup || inputs.enrichedExtras || inputs.artifactSignals ? { schemaVersion: RICH_ROLLUP_SCHEMA_VERSION } : {},
19916
19934
  ...inputs.rollup ? { dailyRollup: inputs.rollup } : {},
19917
19935
  ...richRollup ? { richRollup } : {},
@@ -21954,7 +21972,7 @@ async function main() {
21954
21972
  case "version":
21955
21973
  case "--version":
21956
21974
  case "-v":
21957
- console.log(`fleetlens ${"0.16.7"}`);
21975
+ console.log(`fleetlens ${"0.16.9"}`);
21958
21976
  break;
21959
21977
  case "help":
21960
21978
  case "--help":
@@ -21977,7 +21995,7 @@ Terminal:
21977
21995
  runs [--watch] [--json] [--since 24h] Live LLM call activity + token spend
21978
21996
 
21979
21997
  Advanced:
21980
- web [page] [--open] Print dashboard URL without auto-starting daemon (pass --open to also launch browser)
21998
+ web [page] [--open] Print dashboard URL; opening it also recovers a stopped daemon
21981
21999
  start --no-daemon Start only the web server (no daemon)
21982
22000
  daemon <start|stop|status|logs> Manage the usage daemon by itself
21983
22001
  autostart <install|uninstall|status> Run the usage daemon at login (macOS launchd)
@@ -4,14 +4,14 @@
4
4
  <dict>
5
5
  <key>CFBundleDevelopmentRegion</key><string>en</string>
6
6
  <key>CFBundleExecutable</key><string>FleetlensMenubar</string>
7
- <key>CFBundleIconFile</key><string></string>
7
+ <key>CFBundleIconFile</key><string>Fleetlens.icns</string>
8
8
  <key>CFBundleIdentifier</key><string>ai.fleetlens.menubar</string>
9
9
  <key>CFBundleInfoDictionaryVersion</key><string>6.0</string>
10
10
  <key>CFBundleName</key><string>Fleetlens</string>
11
- <key>CFBundleDisplayName</key><string>Fleetlens Menu Bar</string>
11
+ <key>CFBundleDisplayName</key><string>Fleetlens</string>
12
12
  <key>CFBundlePackageType</key><string>APPL</string>
13
- <key>CFBundleShortVersionString</key><string>0.16.7</string>
14
- <key>CFBundleVersion</key><string>0.16.7</string>
13
+ <key>CFBundleShortVersionString</key><string>0.16.9</string>
14
+ <key>CFBundleVersion</key><string>0.16.9</string>
15
15
  <key>LSApplicationCategoryType</key><string>public.app-category.developer-tools</string>
16
16
  <key>LSMinimumSystemVersion</key><string>14.0</string>
17
17
  <key>LSUIElement</key><true/>
@@ -0,0 +1,7 @@
1
+ <svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 32 32" fill="none">
2
+ <rect width="32" height="32" rx="9" fill="#0D9488"/>
3
+ <path d="M7.5 8.5h2.75c5.1 0 5.1 6.5 9.3 6.5H22v2h-2.45c-5.2 0-5.2-6.5-9.3-6.5H7.5z" fill="white"/>
4
+ <path d="M7.5 15H22v2H7.5z" fill="white"/>
5
+ <path d="M7.5 21.5h2.75c4.1 0 4.1-6.5 9.3-6.5H22v2h-2.45c-4.2 0-4.2 6.5-9.3 6.5H7.5z" fill="white"/>
6
+ <circle cx="24.5" cy="16" r="2.5" fill="white"/>
7
+ </svg>
@@ -4,6 +4,10 @@
4
4
  <dict>
5
5
  <key>files</key>
6
6
  <dict>
7
+ <key>Resources/Fleetlens.icns</key>
8
+ <data>
9
+ NKrSPxjCjw0xmOgvoG31OeMS5Po=
10
+ </data>
7
11
  <key>Resources/claude.svg</key>
8
12
  <data>
9
13
  sZ+BX4Qhp59/FCvfW2wJIwiH6Yo=
@@ -12,6 +16,10 @@
12
16
  <data>
13
17
  r+rHIJooRcD9VUSTGH3DzUbLfz0=
14
18
  </data>
19
+ <key>Resources/fleetlens-mark.svg</key>
20
+ <data>
21
+ uZIkTH/r4Jkr05rGOmWHVhc2UPc=
22
+ </data>
15
23
  <key>Resources/grok.svg</key>
16
24
  <data>
17
25
  ag5AkUKYKo/2vBhrhvxr8vFjYtg=
@@ -23,6 +31,13 @@
23
31
  </dict>
24
32
  <key>files2</key>
25
33
  <dict>
34
+ <key>Resources/Fleetlens.icns</key>
35
+ <dict>
36
+ <key>hash2</key>
37
+ <data>
38
+ jJthY0bxZLSwOOTOyKo77d76HDWcPdRXAsYhEylUgDg=
39
+ </data>
40
+ </dict>
26
41
  <key>Resources/claude.svg</key>
27
42
  <dict>
28
43
  <key>hash2</key>
@@ -37,6 +52,13 @@
37
52
  cYTye5ig9uIFRuJYr2R7kkGXfzthdp7f+T8NdbSzZP0=
38
53
  </data>
39
54
  </dict>
55
+ <key>Resources/fleetlens-mark.svg</key>
56
+ <dict>
57
+ <key>hash2</key>
58
+ <data>
59
+ xE+n+OmsiW4chf9QqmkT2QjGqCdwmt8qBPR98pU2s+4=
60
+ </data>
61
+ </dict>
40
62
  <key>Resources/grok.svg</key>
41
63
  <dict>
42
64
  <key>hash2</key>
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "fleetlens",
3
- "version": "0.16.7",
3
+ "version": "0.16.9",
4
4
  "description": "fleetlens — local-only dashboard and usage tracker for Claude Code sessions and agent fleets",
5
5
  "license": "MIT",
6
6
  "repository": {
@@ -1,3 +0,0 @@
1
- module.exports=[93695,(e,t,r)=>{t.exports=e.x("next/dist/shared/lib/no-fallback-error.external.js",()=>require("next/dist/shared/lib/no-fallback-error.external.js"))},18622,(e,t,r)=>{t.exports=e.x("next/dist/compiled/next-server/app-page-turbo.runtime.prod.js",()=>require("next/dist/compiled/next-server/app-page-turbo.runtime.prod.js"))},56704,(e,t,r)=>{t.exports=e.x("next/dist/server/app-render/work-async-storage.external.js",()=>require("next/dist/server/app-render/work-async-storage.external.js"))},32319,(e,t,r)=>{t.exports=e.x("next/dist/server/app-render/work-unit-async-storage.external.js",()=>require("next/dist/server/app-render/work-unit-async-storage.external.js"))},70406,(e,t,r)=>{t.exports=e.x("next/dist/compiled/@opentelemetry/api",()=>require("next/dist/compiled/@opentelemetry/api"))},50227,(e,t,r)=>{t.exports=e.x("node:path",()=>require("node:path"))},2157,(e,t,r)=>{t.exports=e.x("node:fs",()=>require("node:fs"))},60526,(e,t,r)=>{t.exports=e.x("node:os",()=>require("node:os"))},66680,(e,t,r)=>{t.exports=e.x("node:crypto",()=>require("node:crypto"))},74533,(e,t,r)=>{t.exports=e.x("node:child_process",()=>require("node:child_process"))},27174,e=>{"use strict";e.i(39587),e.s([])},30212,e=>{"use strict";var t=e.i(79357);function r(e){return(0,t.toLocalDay)(e.getTime())}function n(e=new Date){let t=new Date(e.getFullYear(),e.getMonth(),e.getDate()),r=t.getDay(),a=new Date(t);a.setDate(t.getDate()-(r+6)%7);let o=new Date(a);return o.setDate(a.getDate()+6),{start:a,end:o}}e.s(["aggregateConcurrency",0,function(e,t){let n,a=function(e,t){let r=[],n=new Date(e.getFullYear(),e.getMonth(),e.getDate()),a=new Date(t.getFullYear(),t.getMonth(),t.getDate());for(;n.getTime()<=a.getTime();)r.push(new Date(n)),n.setDate(n.getDate()+1);return r}(t.start,t.end),o=new Map;for(let e of a)o.set(r(e),{peak:0,has_cross_project:!1});for(let t of e){let e=r(new Date(t.startMs)),n=o.get(e);n&&(t.peak>n.peak&&(n.peak=t.peak),t.crossProject&&(n.has_cross_project=!0))}let s=a.map(e=>{let t=r(e),n=o.get(t);return{date:t,peak:n.peak,has_cross_project:n.has_cross_project}}),i=0,p=0,l=0;for(let e of s)e.peak>i&&(i=e.peak,n=e.date),e.peak>=3&&p++,e.has_cross_project&&l++;return{by_day:s,peak:i,peak_day:n,multi_agent_days:p,cross_project_days:l}},"calendarMonth",0,function(e=new Date){return{start:new Date(e.getFullYear(),e.getMonth(),1),end:new Date(e.getFullYear(),e.getMonth()+1,0)}},"calendarWeek",0,n,"priorCalendarMonth",0,function(e=new Date){return{start:new Date(e.getFullYear(),e.getMonth()-1,1),end:new Date(e.getFullYear(),e.getMonth(),0)}},"priorCalendarWeek",0,function(e=new Date){let t=n(e),r=new Date(t.start);r.setDate(t.start.getDate()-1);let a=new Date(r);return a.setDate(r.getDate()-6),{start:a,end:r}}])},75169,e=>{"use strict";function t(e){let t=new Date(e),r=t.getFullYear(),n=String(t.getMonth()+1).padStart(2,"0"),a=String(t.getDate()).padStart(2,"0");return`${r}-${n}-${a}`}function r(e=Date.now()){return t(e)}e.i(5737);let n=/^\d{4}-\d{2}-\d{2}$/;function a(e){return n.test(e)}let o=/^\d{4}-\d{2}$/;e.s(["asMonday",0,function(e){return a(e)&&1===new Date(`${e}T00:00:00`).getDay()?e:null},"currentWeekMonday",0,function(e=Date.now()){var n;let a,o;return n=r(e),o=(a=new Date(`${n}T00:00:00`)).getDay(),a.setDate(a.getDate()+(0===o?-6:1-o)),t(a.getTime())},"currentYearMonth",0,function(e=Date.now()){return r(e).slice(0,7)},"isValidDate",0,a,"isValidYearMonth",0,function(e){return o.test(e)},"todayLocal",0,r])},59639,(e,t,r)=>{t.exports=e.x("node:process",()=>require("node:process"))},12057,(e,t,r)=>{t.exports=e.x("node:util",()=>require("node:util"))}];
2
-
3
- //# sourceMappingURL=%5Broot-of-the-server%5D__123tfcb._.js.map