octwin-cli 0.8.15 → 0.8.16

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/CHANGELOG.md CHANGED
@@ -7,6 +7,17 @@ repo root [`CHANGELOG.md`](../../CHANGELOG.md); this file is the CLI-only cut th
7
7
 
8
8
  ## [Unreleased]
9
9
 
10
+ ## [0.8.16] - 2026-10-07
11
+
12
+ ### Changed
13
+ - **`octwin performance --channel` marks a figure that is not narrowed.** Capacity has no channel, so a
14
+ band narrowed to one prints the capacity tile with `(all channels)` rather than letting it pass as the
15
+ channel's own.
16
+ - **`octwin performance` prints a rate's change in points.** The platform
17
+ replaced each indicator's `delta_pct` with `change` (one rule for the console, the server and the CLI): a conversion rate going
18
+ 42.9% → 57.1% now reads `+14.2 pts vs prev`, not `+33.1%`, and an NPS from −25 to +40 reads `+65`,
19
+ not `-260%`. A count still reads as a percent; growth from zero reads `new`.
20
+
10
21
  ## [0.8.15] - 2026-10-06
11
22
 
12
23
  ### Fixed
package/dist/cli.js CHANGED
@@ -5373,14 +5373,24 @@ async function cmdPerformance(flags) {
5373
5373
  out.print(' (none)');
5374
5374
  for (const i of inds) {
5375
5375
  const unit = i.unit === 'pct' ? '%' : '';
5376
- // `delta_pct` is signed and against the PREVIOUS window — sign it explicitly so
5377
- // a fall is never read as a rise.
5378
- const delta = i.delta_pct == null ? '' : ` ${i.delta_pct >= 0 ? '+' : ''}${i.delta_pct}% vs prev`;
5376
+ // `change` is the band's ONE change rule, already derived by the platform: a relative % for
5377
+ // a count, money or duration, POINTS for a rate, score or NPS (a % of a % misleads), and
5378
+ // signed the way the number moved — sign it explicitly so a fall is never read as a rise.
5379
+ const c = i.change ?? { kind: 'none' };
5380
+ const sign = (n) => `${n > 0 ? '+' : ''}${n}`;
5381
+ const delta = c.kind === 'relative' ? ` ${sign(c.pct)}% vs prev`
5382
+ : c.kind === 'points' ? ` ${sign(c.delta)}${i.unit === 'pct' ? ' pts' : ''} vs prev`
5383
+ : c.kind === 'from_zero' ? ' new vs prev'
5384
+ : c.kind === 'flat' ? ' no change vs prev'
5385
+ : '';
5379
5386
  const frac = i.numerator != null && i.denominator != null
5380
5387
  ? ` (${i.numerator}/${i.denominator}${i.denominator_of ? ` ${i.denominator_of}` : ''})`
5381
5388
  : '';
5389
+ // A band narrowed to one channel says so per figure: one that cannot be narrowed (capacity) is
5390
+ // the all-channel figure, and the line says it rather than letting it pass as the channel's.
5391
+ const scope = i.channel?.kind === 'not_narrowable' ? ' (all channels)' : '';
5382
5392
  out.print(` ${String(pickLabel(i.heading) ?? i.kind).padEnd(16)} ${String(pickLabel(i.label) ?? '').padEnd(20)}`
5383
- + ` ${String(i.value ?? '—').padStart(9)}${unit}${delta}${frac}`);
5393
+ + ` ${String(i.value ?? '—').padStart(9)}${unit}${delta}${frac}${scope}`);
5384
5394
  if (i.why)
5385
5395
  out.print(` why: ${i.why}`);
5386
5396
  if (i.biggest_dropoff)
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "octwin-cli",
3
- "version": "0.8.15",
3
+ "version": "0.8.16",
4
4
  "description": "Octwin external-pack developer CLI (by CEQUENS) — scaffold, validate, deploy, and check pure-YAML packs on your tenant.",
5
5
  "type": "module",
6
6
  "bin": {