sickbay 1.4.0 → 1.4.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.
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  Header
3
- } from "./chunk-QC7BTWPM.js";
3
+ } from "./chunk-C6CDVDZ2.js";
4
4
 
5
5
  // src/components/DiffApp.tsx
6
6
  import React, { useState, useEffect } from "react";
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  Header
3
- } from "./chunk-QC7BTWPM.js";
3
+ } from "./chunk-C6CDVDZ2.js";
4
4
  import {
5
5
  shortName
6
6
  } from "./chunk-7CHSSJZH.js";
@@ -3,7 +3,7 @@ import {
3
3
  } from "./chunk-MBVA75EM.js";
4
4
  import {
5
5
  Header
6
- } from "./chunk-QC7BTWPM.js";
6
+ } from "./chunk-C6CDVDZ2.js";
7
7
  import {
8
8
  shortName
9
9
  } from "./chunk-7CHSSJZH.js";
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  Header
3
- } from "./chunk-QC7BTWPM.js";
3
+ } from "./chunk-C6CDVDZ2.js";
4
4
  import {
5
5
  shortName
6
6
  } from "./chunk-7CHSSJZH.js";
@@ -4,7 +4,7 @@ import {
4
4
  } from "./chunk-SHO3ZXTH.js";
5
5
  import {
6
6
  Header
7
- } from "./chunk-QC7BTWPM.js";
7
+ } from "./chunk-C6CDVDZ2.js";
8
8
  import {
9
9
  detectRegressions,
10
10
  loadHistory
@@ -5,7 +5,7 @@ import {
5
5
  import {
6
6
  LOADING_MESSAGES,
7
7
  UpdateNotice
8
- } from "./chunk-FNY6PWDN.js";
8
+ } from "./chunk-TYG7ZQBP.js";
9
9
  import {
10
10
  checkForUpdate
11
11
  } from "./chunk-TWCTPAXQ.js";
@@ -689,7 +689,7 @@ function TuiApp({
689
689
  return () => timers.forEach(clearTimeout);
690
690
  }, []);
691
691
  useEffect7(() => {
692
- checkForUpdate("1.3.1").then((info) => {
692
+ checkForUpdate("1.4.1").then((info) => {
693
693
  if (info) setUpdateInfo(info);
694
694
  });
695
695
  }, []);
@@ -11,7 +11,7 @@ var ASCII_ART = `
11
11
  A vitals health check for your app
12
12
  `.trim();
13
13
  function Header({ projectName }) {
14
- return /* @__PURE__ */ React.createElement(Box, { flexDirection: "column", marginBottom: 1 }, /* @__PURE__ */ React.createElement(Text, { color: "green" }, ASCII_ART), /* @__PURE__ */ React.createElement(Box, { marginTop: 1 }, /* @__PURE__ */ React.createElement(Text, { dimColor: true }, " v", "1.3.1")), projectName && /* @__PURE__ */ React.createElement(Box, { marginTop: 1 }, /* @__PURE__ */ React.createElement(Text, { dimColor: true }, " Analyzing "), /* @__PURE__ */ React.createElement(Text, { bold: true, color: "white" }, projectName)));
14
+ return /* @__PURE__ */ React.createElement(Box, { flexDirection: "column", marginBottom: 1 }, /* @__PURE__ */ React.createElement(Text, { color: "green" }, ASCII_ART), /* @__PURE__ */ React.createElement(Box, { marginTop: 1 }, /* @__PURE__ */ React.createElement(Text, { dimColor: true }, " v", "1.4.1")), projectName && /* @__PURE__ */ React.createElement(Box, { marginTop: 1 }, /* @__PURE__ */ React.createElement(Text, { dimColor: true }, " Analyzing "), /* @__PURE__ */ React.createElement(Text, { bold: true, color: "white" }, projectName)));
15
15
  }
16
16
 
17
17
  export {
@@ -3,11 +3,12 @@ import React from "react";
3
3
  import { Box, Text } from "ink";
4
4
  function UpdateNotice({ currentVersion, latestVersion }) {
5
5
  const line1 = `Update available: ${currentVersion} \u2192 ${latestVersion}`;
6
- const line2 = 'Run "npx sickbay@latest" to upgrade';
7
- const maxLength = Math.max(line1.length, line2.length);
6
+ const line2 = "npx sickbay@latest (one-time run)";
7
+ const line3 = "npm i -g sickbay@latest (global install)";
8
+ const maxLength = Math.max(line1.length, line2.length, line3.length);
8
9
  const padding = 2;
9
10
  const boxWidth = maxLength + padding * 2;
10
- return /* @__PURE__ */ React.createElement(Box, { flexDirection: "column", marginBottom: 1 }, /* @__PURE__ */ React.createElement(Text, { color: "yellow", dimColor: true }, `\u256D${"\u2500".repeat(boxWidth)}\u256E`), /* @__PURE__ */ React.createElement(Box, { paddingX: padding }, /* @__PURE__ */ React.createElement(Text, { color: "yellow", dimColor: true }, line1)), /* @__PURE__ */ React.createElement(Box, { paddingX: padding }, /* @__PURE__ */ React.createElement(Text, { color: "yellow", dimColor: true }, line2)), /* @__PURE__ */ React.createElement(Text, { color: "yellow", dimColor: true }, `\u2570${"\u2500".repeat(boxWidth)}\u256F`));
11
+ return /* @__PURE__ */ React.createElement(Box, { flexDirection: "column", marginBottom: 1 }, /* @__PURE__ */ React.createElement(Text, { color: "yellow", dimColor: true }, `\u256D${"\u2500".repeat(boxWidth)}\u256E`), /* @__PURE__ */ React.createElement(Box, { paddingX: padding }, /* @__PURE__ */ React.createElement(Text, { color: "yellow", dimColor: true }, line1)), /* @__PURE__ */ React.createElement(Box, { paddingX: padding }, /* @__PURE__ */ React.createElement(Text, { color: "yellow", dimColor: true }, line2)), /* @__PURE__ */ React.createElement(Box, { paddingX: padding }, /* @__PURE__ */ React.createElement(Text, { color: "yellow", dimColor: true }, line3)), /* @__PURE__ */ React.createElement(Text, { color: "yellow", dimColor: true }, `\u2570${"\u2500".repeat(boxWidth)}\u256F`));
11
12
  }
12
13
 
13
14
  // src/lib/messages.ts
package/dist/index.js CHANGED
@@ -5,10 +5,10 @@ import {
5
5
  import {
6
6
  LOADING_MESSAGES,
7
7
  UpdateNotice
8
- } from "./chunk-FNY6PWDN.js";
8
+ } from "./chunk-TYG7ZQBP.js";
9
9
  import {
10
10
  Header
11
- } from "./chunk-QC7BTWPM.js";
11
+ } from "./chunk-C6CDVDZ2.js";
12
12
  import {
13
13
  getScoreEmoji,
14
14
  runSickbay,
@@ -303,7 +303,7 @@ if (existsSync(globalConfigPath)) {
303
303
  }
304
304
  config({ debug: false, quiet: true });
305
305
  var program = new Command();
306
- program.name("sickbay").description("React project health check CLI").version("1.3.1").enablePositionalOptions().passThroughOptions().option("-p, --path <path>", "project path to analyze", process.cwd()).option("-c, --checks <checks>", "comma-separated list of checks to run").option("--package <name>", "scope to a single named package (monorepo only)").option("--json", "output raw JSON report").option("--web", "open web dashboard after scan").option("--no-ai", "disable AI features").option("--no-quotes", "suppress personality quotes in output").option("--verbose", "show verbose output").action(async (options) => {
306
+ program.name("sickbay").description("React project health check CLI").version("1.4.1", "-v, --version").enablePositionalOptions().passThroughOptions().option("-p, --path <path>", "project path to analyze", process.cwd()).option("-c, --checks <checks>", "comma-separated list of checks to run").option("--package <name>", "scope to a single named package (monorepo only)").option("--json", "output raw JSON report").option("--web", "open web dashboard after scan").option("--no-ai", "disable AI features").option("--no-quotes", "suppress personality quotes in output").option("--verbose", "show verbose output").action(async (options) => {
307
307
  if (options.path && options.path !== process.cwd()) {
308
308
  const projectEnvPath = join(options.path, ".env");
309
309
  if (existsSync(projectEnvPath)) {
@@ -313,7 +313,7 @@ program.name("sickbay").description("React project health check CLI").version("1
313
313
  const updatePromise = (async () => {
314
314
  try {
315
315
  const { checkForUpdate } = await import("./update-check-M7IFOMLJ.js");
316
- return await checkForUpdate("1.3.1");
316
+ return await checkForUpdate("1.4.1");
317
317
  } catch {
318
318
  return null;
319
319
  }
@@ -418,7 +418,7 @@ program.command("fix").description("Interactively fix issues found by sickbay sc
418
418
  }
419
419
  const { resolveProject } = await import("./resolve-package-57YPNPWD.js");
420
420
  const resolution = await resolveProject(options.path, options.package);
421
- const { FixApp } = await import("./FixApp-FRFLW6XV.js");
421
+ const { FixApp } = await import("./FixApp-2IRNVALD.js");
422
422
  const checks = options.checks ? options.checks.split(",").map((s) => s.trim()) : void 0;
423
423
  const projectPath = resolution.isMonorepo ? resolution.targetPath ?? options.path : resolution.targetPath;
424
424
  render(
@@ -444,7 +444,7 @@ program.command("trend").description("Show score history and trends over time").
444
444
  const { resolveProject } = await import("./resolve-package-57YPNPWD.js");
445
445
  const resolution = await resolveProject(options.path, options.package);
446
446
  const projectPath = resolution.isMonorepo ? resolution.targetPath ?? options.path : resolution.targetPath;
447
- const { TrendApp } = await import("./TrendApp-WS45AJW6.js");
447
+ const { TrendApp } = await import("./TrendApp-7SR7UCVQ.js");
448
448
  render(
449
449
  React6.createElement(TrendApp, {
450
450
  projectPath,
@@ -466,7 +466,7 @@ program.command("stats").description("Show a quick codebase overview and project
466
466
  const { resolveProject } = await import("./resolve-package-57YPNPWD.js");
467
467
  const resolution = await resolveProject(options.path, options.package);
468
468
  const projectPath = resolution.isMonorepo ? resolution.targetPath ?? options.path : resolution.targetPath;
469
- const { StatsApp } = await import("./StatsApp-4H2FX2OH.js");
469
+ const { StatsApp } = await import("./StatsApp-QDKFND5Q.js");
470
470
  render(
471
471
  React6.createElement(StatsApp, {
472
472
  projectPath,
@@ -478,7 +478,7 @@ program.command("stats").description("Show a quick codebase overview and project
478
478
  );
479
479
  });
480
480
  program.command("tui").description("Launch the persistent developer dashboard").option("-p, --path <path>", "project path to monitor", process.cwd()).option("--no-watch", "disable file-watching auto-refresh").option("--no-quotes", "suppress personality quotes in output").option("--refresh <seconds>", "auto-refresh interval in seconds", "300").option("-c, --checks <checks>", "comma-separated list of checks to run").action(async (options) => {
481
- const { TuiApp } = await import("./TuiApp-6YGVWIYM.js");
481
+ const { TuiApp } = await import("./TuiApp-CWMLC5QI.js");
482
482
  const checks = options.checks ? options.checks.split(",").map((s) => s.trim()) : void 0;
483
483
  render(
484
484
  React6.createElement(TuiApp, {
@@ -501,7 +501,7 @@ program.command("doctor").description("Diagnose project setup and configuration
501
501
  const { resolveProject } = await import("./resolve-package-57YPNPWD.js");
502
502
  const resolution = await resolveProject(options.path, options.package);
503
503
  const projectPath = resolution.isMonorepo ? resolution.targetPath ?? options.path : resolution.targetPath;
504
- const { DoctorApp } = await import("./DoctorApp-ODLJDYJM.js");
504
+ const { DoctorApp } = await import("./DoctorApp-C4UWQ2Y3.js");
505
505
  render(
506
506
  React6.createElement(DoctorApp, {
507
507
  projectPath,
@@ -549,7 +549,7 @@ program.command("diff <branch>").description("Compare health score against anoth
549
549
  }
550
550
  }
551
551
  const checks = options.checks ? options.checks.split(",").map((s) => s.trim()) : void 0;
552
- const { DiffApp } = await import("./DiffApp-HIIMRBHH.js");
552
+ const { DiffApp } = await import("./DiffApp-URU5RDS3.js");
553
553
  render(
554
554
  React6.createElement(DiffApp, {
555
555
  projectPath: options.path,
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "sickbay",
3
- "version": "1.4.0",
3
+ "version": "1.4.2",
4
4
  "description": "Zero-config health check CLI for JavaScript and TypeScript projects",
5
5
  "license": "MIT",
6
6
  "repository": {