@hunt-labs/bytekit-cli 0.9.1 → 0.9.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.
package/CHANGELOG.md CHANGED
@@ -10,6 +10,21 @@ today, see [README.md](./README.md), which remains the authoritative usage guide
10
10
 
11
11
  ## [Unreleased]
12
12
 
13
+ ## [0.9.2] - 2026-08-31
14
+
15
+ ### Changed
16
+
17
+ - Corrected the `detailValueText` doc comment in `src/output.ts`, which claimed the object arm of
18
+ the `details` renderer carried the SAME depth bound as the array arm through `detailJson`
19
+ (#3691). It carries the same **constant** (`DETAIL_MAX_DEPTH`), not the same **counter**:
20
+ `detailJson` takes no depth argument and starts a fresh budget from its own replacer chain. The
21
+ comment now records the two consequences — the arms agree level-for-level only on homogeneous
22
+ chains, and a mixed array/object chain can render up to `2 × DETAIL_MAX_DEPTH` levels — and why
23
+ threading `depth` into `detailJson` is not the fix: it would elide shapes that render today,
24
+ breaking the byte-identical inverse-case contract #3647 shipped under. **No consumer-visible
25
+ change** — this release touches one comment, and every `details` shape renders byte-identically
26
+ to 0.9.1.
27
+
13
28
  ## [0.9.1] - 2026-08-27
14
29
 
15
30
  ### Fixed
package/dist/output.js CHANGED
@@ -439,8 +439,18 @@ function isDetailRecord(value) {
439
439
  * longer than the value it names.
440
440
  *
441
441
  * `depth` counts array levels already descended and is bounded by {@link DETAIL_MAX_DEPTH} (#3633);
442
- * the object arm carries the SAME bound through {@link detailJson} (#3647), and every remaining arm
443
- * terminates on its own.
442
+ * the object arm reuses the same CONSTANT through {@link detailJson} (#3647) but spends its OWN
443
+ * INDEPENDENT budget, counted from that call, and every remaining arm terminates on its own.
444
+ *
445
+ * Two budgets, not one, so: the arms agree level-for-level only on HOMOGENEOUS chains — an object
446
+ * sitting at array-depth 8 is not elided, while an array sitting at object-depth 8 is — and a mixed
447
+ * array/object chain can render up to `2 × DETAIL_MAX_DEPTH` nesting levels rather than
448
+ * `DETAIL_MAX_DEPTH`.
449
+ *
450
+ * Threading `depth` into {@link detailJson} is NOT the fix. It elides shapes that render today
451
+ * (measured across a 101-case corpus: 15 cases change instead of 10), which breaks the
452
+ * byte-identical inverse-case contract #3647 shipped under. Stack safety does not need it either:
453
+ * the array arm never resumes below an object, so the total descent is bounded at 8 + 8.
444
454
  */
445
455
  function detailValueText(value, depth = 0) {
446
456
  if (typeof value === 'string')
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@hunt-labs/bytekit-cli",
3
- "version": "0.9.1",
3
+ "version": "0.9.2",
4
4
  "description": "ByteKit CLI — wraps @hunt-labs/bytekit-sdk as shell subcommands",
5
5
  "license": "MIT",
6
6
  "type": "module",