@skein-code/cli 0.3.0 → 0.3.1

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.
package/dist/cli.js CHANGED
@@ -220,7 +220,7 @@ function isSqliteBusy(error) {
220
220
  // package.json
221
221
  var package_default = {
222
222
  name: "@skein-code/cli",
223
- version: "0.3.0",
223
+ version: "0.3.1",
224
224
  description: "A context-first, model-agnostic coding agent with an auditable terminal workspace.",
225
225
  type: "module",
226
226
  license: "MIT",
@@ -236,9 +236,8 @@ var package_default = {
236
236
  },
237
237
  skein: {
238
238
  releaseNotes: [
239
- "Guided first-run setup for official APIs and third-party relays",
240
- "Protocol-aware OpenAI-compatible and Anthropic-compatible routing",
241
- "Update notices now include a bounded summary of what changed"
239
+ "Fix ghost characters left in /theme list and other list panels",
240
+ "List rows now pad to a stable width so incremental repaints overwrite stale cells"
242
241
  ]
243
242
  },
244
243
  bin: {
@@ -11438,6 +11437,12 @@ function sliceDisplay(value, maxWidth) {
11438
11437
  }
11439
11438
  return output2;
11440
11439
  }
11440
+ function padDisplay(value, width) {
11441
+ if (width <= 0) return "";
11442
+ const truncated = truncateDisplay(value, width);
11443
+ const pad = Math.max(0, width - displayWidth(truncated));
11444
+ return truncated + " ".repeat(pad);
11445
+ }
11441
11446
  function compactDisplayPath(path, maxWidth = 54) {
11442
11447
  if (displayWidth(path) <= maxWidth) return path;
11443
11448
  const parts = path.split("/").filter(Boolean);
@@ -12531,23 +12536,21 @@ function ListPanel({ title, entries, width = 80, glyphMode = "auto", hideTitle =
12531
12536
  const labelLimit = entryDetail ? Math.max(1, Math.min(28, innerWidth - 4)) : innerWidth;
12532
12537
  const label = truncateDisplay(`${glyphs.bullet} ${entryLabel}`, labelLimit);
12533
12538
  if (rowWidth < 52 && entryDetail) {
12539
+ const detailText2 = ` ${truncateDisplay(entryDetail, Math.max(1, innerWidth - 2))}`;
12534
12540
  return /* @__PURE__ */ jsxs(Box, { flexDirection: "column", children: [
12535
- /* @__PURE__ */ jsx(Text, { color, children: label }),
12536
- /* @__PURE__ */ jsx(Text, { color: theme.muted, children: ` ${truncateDisplay(entryDetail, Math.max(1, innerWidth - 2))}` })
12541
+ /* @__PURE__ */ jsx(Text, { color, children: padDisplay(label, innerWidth) }),
12542
+ /* @__PURE__ */ jsx(Text, { color: theme.muted, children: padDisplay(detailText2, innerWidth) })
12537
12543
  ] }, `${entry.label}-${index}`);
12538
12544
  }
12539
12545
  const detailLimit = Math.max(1, innerWidth - displayWidth(label) - 2);
12546
+ const detailText = entryDetail ? truncateDisplay(entryDetail, detailLimit) : "";
12547
+ const trailing = Math.max(0, innerWidth - displayWidth(label) - (entryDetail ? 2 + displayWidth(detailText) : 0));
12540
12548
  return /* @__PURE__ */ jsxs(Box, { children: [
12541
12549
  /* @__PURE__ */ jsx(Text, { color, children: label }),
12542
- entryDetail ? /* @__PURE__ */ jsxs(Text, { color: theme.muted, children: [
12543
- " ",
12544
- truncateDisplay(entryDetail, detailLimit)
12545
- ] }) : null
12550
+ entryDetail ? /* @__PURE__ */ jsx(Text, { color: theme.muted, children: ` ${detailText}` }) : null,
12551
+ trailing > 0 ? /* @__PURE__ */ jsx(Text, { children: " ".repeat(trailing) }) : null
12546
12552
  ] }, `${entry.label}-${index}`);
12547
- }) : /* @__PURE__ */ jsxs(Text, { color: theme.dim, children: [
12548
- glyphs.bullet,
12549
- " none"
12550
- ] })
12553
+ }) : /* @__PURE__ */ jsx(Text, { color: theme.dim, children: padDisplay(`${glyphs.bullet} none`, innerWidth) })
12551
12554
  ] });
12552
12555
  }
12553
12556
  function MeterBar({ segments, total, width, glyphs }) {