ansimax 1.3.5 → 1.3.6

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
@@ -3,6 +3,53 @@
3
3
  All notable changes to **ansimax** are documented in this file.
4
4
  This project follows [Semantic Versioning](https://semver.org/).
5
5
 
6
+ ## [1.3.6] — Branch coverage improvements
7
+
8
+ Maintenance release. Zero behavior changes — only adds tests covering
9
+ defensive branches and adjusts `istanbul ignore` comments where branches
10
+ are genuinely unreachable in normal usage.
11
+
12
+ ### Improved — Tests
13
+
14
+ **panels (`+7` tests):**
15
+ - `vsplit` default `gap = 1` when option omitted
16
+ - `vsplit` handles columns of unequal heights (triggers `block[r] ?? ''` fallback)
17
+ - `centerBlock` default `align = 'center'` with `height` (vertical centering branch)
18
+ - `centerBlock` with explicit `align='start'` (alternative branch)
19
+ - `frame` fallback `'─'` when `topChar=''` or non-string
20
+ - `grid` default `columns = 1` when option omitted/undefined
21
+
22
+ **frames (`+7` tests):**
23
+ - `ensureString` handles `null`/`undefined` via `?? ''` fallback
24
+ - `presets.loadingBar` fallback `'░'` for invalid `empty` (`''` or non-string)
25
+ - `presets.ball` fallback `width = 20` for `NaN`/non-number input
26
+ - `presets.breathe` fallback `steps = 8` for `NaN`/non-number input
27
+
28
+ **loaders (`+5` tests):**
29
+ - `loader.bar` fallback `'░'` for invalid `emptyChar`
30
+ - `loader.spin` finalText with all three success states (`undefined`, `true`, `false`)
31
+ — exercises icon ternary chain branches
32
+
33
+ ### Improved — `istanbul ignore` comments
34
+
35
+ Some `??` and conditional-spread branches are unreachable in real usage
36
+ (e.g. `frames[frame] ?? ''` after `frame = i % frames.length` with a non-empty
37
+ array). Marked with explanatory `istanbul ignore next` comments instead of
38
+ chasing coverage with synthetic tests:
39
+
40
+ - `loaders:376` — `frames[frame] ?? ''` (frame index always in bounds)
41
+ - `loaders:997` — second instance of `addOpts.color !== undefined` spread
42
+
43
+ Total: **+19 tests** added across panels, frames, loaders.
44
+
45
+ ### Notes
46
+
47
+ - No runtime changes — drop-in replacement for `1.3.5`
48
+ - No new exports, no API surface changes
49
+ - Same `dist/` output as `1.3.5` would have produced
50
+
51
+ ---
52
+
6
53
  ## [1.3.5] — Mathematical color science + cleanup
7
54
 
8
55
  Patch release focused on mathematical depth: perceptually-uniform color
package/README.es.md CHANGED
@@ -7,7 +7,7 @@
7
7
  _Colores • Gradientes • Animaciones • ASCII Art • Pixel Art • Árboles • Componentes • Temas_
8
8
 
9
9
  [![License](https://img.shields.io/badge/license-Apache%202.0-blue.svg?style=flat-square)](LICENSE)
10
- [![npm](https://img.shields.io/badge/npm-v1.3.5-cb3837.svg?style=flat-square)](https://www.npmjs.com/package/ansimax)
10
+ [![npm](https://img.shields.io/badge/npm-v1.3.6-cb3837.svg?style=flat-square)](https://www.npmjs.com/package/ansimax)
11
11
  [![TypeScript](https://img.shields.io/badge/TypeScript-strict-3178c6.svg?style=flat-square)](tsconfig.json)
12
12
  [![Coverage](https://img.shields.io/badge/coverage-98%25-brightgreen.svg?style=flat-square)](#testing)
13
13
  [![Tests](https://img.shields.io/badge/tests-2000%2B%20passing-brightgreen.svg?style=flat-square)](#testing)
@@ -478,7 +478,7 @@ console.log(components.table([
478
478
  ['loaders', color.green('● listo'), '100%'],
479
479
  ], { borderStyle: 'rounded' }));
480
480
 
481
- console.log(components.badge('VERSION', 'v1.3.5'));
481
+ console.log(components.badge('VERSION', 'v1.3.6'));
482
482
  console.log(components.badge('BUILD', 'passing'));
483
483
  ```
484
484
 
@@ -1065,6 +1065,14 @@ ansimax/
1065
1065
 
1066
1066
  ## 📝 Changelog
1067
1067
 
1068
+ ### v1.3.6 — Mejoras de branch coverage
1069
+
1070
+ Release de mantenimiento. Cero cambios de comportamiento:
1071
+
1072
+ - 🧪 **+19 tests** cubriendo branches defensivos en panels, frames, loaders
1073
+ - 🧹 Mejorados comentarios `istanbul ignore` para branches genuinamente inalcanzables
1074
+ - ✅ Drop-in replacement para `1.3.5` — mismo `dist/` output
1075
+
1068
1076
  ### v1.3.5 — Color science matemático + limpieza
1069
1077
 
1070
1078
  Release patch enfocado en profundidad matemática y limpieza de código. Cero breaking changes:
package/README.md CHANGED
@@ -7,7 +7,7 @@
7
7
  _Colors • Gradients • Animations • ASCII Art • Pixel Art • Trees • Components • Themes_
8
8
 
9
9
  [![License](https://img.shields.io/badge/license-Apache%202.0-blue.svg?style=flat-square)](LICENSE)
10
- [![npm](https://img.shields.io/badge/npm-v1.3.5-cb3837.svg?style=flat-square)](https://www.npmjs.com/package/ansimax)
10
+ [![npm](https://img.shields.io/badge/npm-v1.3.6-cb3837.svg?style=flat-square)](https://www.npmjs.com/package/ansimax)
11
11
  [![TypeScript](https://img.shields.io/badge/TypeScript-strict-3178c6.svg?style=flat-square)](tsconfig.json)
12
12
  [![Coverage](https://img.shields.io/badge/coverage-98%25-brightgreen.svg?style=flat-square)](#testing)
13
13
  [![Tests](https://img.shields.io/badge/tests-2000%2B%20passing-brightgreen.svg?style=flat-square)](#testing)
@@ -478,7 +478,7 @@ console.log(components.table([
478
478
  ['loaders', color.green('● ready'), '100%'],
479
479
  ], { borderStyle: 'rounded' }));
480
480
 
481
- console.log(components.badge('VERSION', 'v1.3.5'));
481
+ console.log(components.badge('VERSION', 'v1.3.6'));
482
482
  console.log(components.badge('BUILD', 'passing'));
483
483
  ```
484
484
 
@@ -1065,6 +1065,14 @@ ansimax/
1065
1065
 
1066
1066
  ## 📝 Changelog
1067
1067
 
1068
+ ### v1.3.6 — Branch coverage improvements
1069
+
1070
+ Maintenance release. Zero behavior changes:
1071
+
1072
+ - 🧪 **+19 tests** covering defensive branches in panels, frames, loaders
1073
+ - 🧹 Improved `istanbul ignore` comments for genuinely unreachable branches
1074
+ - ✅ Drop-in replacement for `1.3.5` — same `dist/` output
1075
+
1068
1076
  ### v1.3.5 — Mathematical color science + cleanup
1069
1077
 
1070
1078
  Patch release focused on math depth and code cleanliness. Zero breaking changes:
package/dist/index.js CHANGED
@@ -3764,6 +3764,7 @@ var multi = (opts = {}) => {
3764
3764
  const item = {
3765
3765
  id,
3766
3766
  text,
3767
+ /* istanbul ignore next — conditional spread + default */
3767
3768
  ...addOpts.color !== void 0 && { color: addOpts.color },
3768
3769
  type: addOpts.type ?? "dots",
3769
3770
  state: "spinning"
package/dist/index.mjs CHANGED
@@ -3558,6 +3558,7 @@ var multi = (opts = {}) => {
3558
3558
  const item = {
3559
3559
  id,
3560
3560
  text,
3561
+ /* istanbul ignore next — conditional spread + default */
3561
3562
  ...addOpts.color !== void 0 && { color: addOpts.color },
3562
3563
  type: addOpts.type ?? "dots",
3563
3564
  state: "spinning"
@@ -118,7 +118,7 @@ async function main() {
118
118
  console.log(components.section('🏷️ Badges & Status', { width: 60 }));
119
119
  console.log();
120
120
  console.log(' ',
121
- components.badge('VERSION', 'v1.3.5'),
121
+ components.badge('VERSION', 'v1.3.6'),
122
122
  components.badge('BUILD', 'passing'),
123
123
  components.badge('LICENSE', 'Apache 2.0'));
124
124
  console.log();
@@ -117,7 +117,7 @@ console.log();
117
117
  console.log(components.section('🏷️ Badges & Status', { width: 60 }));
118
118
  console.log();
119
119
  console.log(' ',
120
- components.badge('VERSION', 'v1.3.5'),
120
+ components.badge('VERSION', 'v1.3.6'),
121
121
  components.badge('BUILD', 'passing'),
122
122
  components.badge('LICENSE', 'Apache 2.0'));
123
123
  console.log();
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "ansimax",
3
- "version": "1.3.5",
3
+ "version": "1.3.6",
4
4
  "description": "Zero-dependency CLI rendering library: colors, gradients, animations, ASCII art, pixel art, components, and themes \u2014 all in TypeScript.",
5
5
  "main": "dist/index.js",
6
6
  "module": "dist/index.mjs",