Release history · auto-generated

What shipped, and when

This page is generated from the package changelogs on every site deploy. Full histories live in each package's CHANGELOG on GitHub

consultchimps

v0.13.1Full changelog

Composable operations tools for consultants.

0.13.1

Dependency updates only

0.13.0

  • Keep a local record of every CLI run. Each command that does work writes one JSON Lines file with the machine it ran on, every progress event with its time, memory sampled every second, and how it ended, so a slow or failed run can be explained afterwards. Records hold counts, sizes, and timings only; `--log-names` adds file names, progress details, and error messages. `--no-log` or `CONSULTCHIMPS_LOG=off` turns recording off, `--cpu-profile` also saves a CPU profile, and `consultchimps logs`, `logs show`, and `logs path` read the records.
  • Raise the supported Node.js floor from 22.0.0 to 22.14.0. Continuous integration now tests that exact version: pnpm 11 requires 22.13, and better-sqlite3 13 crashes on the 22.13 patch line, so 22.14.0 is the lowest release on which every published package works.
  • Group staged imports under `db import prepare`, `inspect`, `update`, and `apply`. Use `db import run` for one-step execution, `--profile` for reusable settings, and `--batch` for a saved review. Rename the library contracts to import profiles and batches while preserving the current stored database and batch formats.
  • Start in a fraction of a second. The CLI loaded every package before reading its command, including the two native database engines, so `--version`, `--help`, and every command took several seconds to begin; on a busy Windows machine it measured 13 to 27 seconds. Each command now loads only the packages it uses, when it runs, and `--version` takes about 0.2 seconds.
  • Skip title rows and spacer columns when reading worksheets. The header row is now the first row holding more than half as many values as the fullest of the ten populated rows below it, or at most one value fewer, so a report title, a merged banner, or a "Prepared by" line above a table four or more columns wide no longer becomes the first column name. A row is skipped only on evidence that it cannot be the header of the block below it, a blank row between the two or every value on it sitting in a cell merged across columns, and never when the skipped rows form a table of their own (two adjacent populated rows, neither a banner); otherwise the first row holding a value stays the header, as it always was, so no row of a table is ever lost to the detection. The inspection's `headerColumns` metric now counts the kept columns. A column that holds nothing in the header row or in any row under it is a spacer and never reaches the output; a column with values under a blank header is kept and named `column_N` by its position among the columns that were kept. One rule decides this for the consolidation, the worksheet readers, the worksheet-records reader, and the inspection, so `sheets inspect` reports the header row and columns a consolidation will use, spelled the same way whatever the header cell's type; an error cell in a header row now names its column `#REF!` rather than Excel's internal code for it. A split looks for its column on the detected header row before searching the whole worksheet, so a title line that repeats the column's name no longer captures the split. A declared `headerRow` is never second-guessed. Consolidation results carry two new metrics, `skippedTitleRows` and `skippedSpacerColumns`, and every worksheet report carries the same two counts; the plain-language result says what was left out.
  • The native database engines now load when a database opens, not when `@consultchimps/db/node` is imported, so the portable single-file CLI no longer loads `better-sqlite3` and `@duckdb/node-api` for `--version`, `--help`, or any command that opens no database. An engine that cannot load is now reported when a database of that format opens, as `DB_NATIVE_ENGINE_UNAVAILABLE` rather than as a problem with the file.

0.12.0

  • The `sheets unprotect` command now reads its own plain-language result summary and refuses an output name whose extension contradicts the workbook's type (an ordinary workbook named `.xlsm`, or a macro-enabled workbook named `.xlsx`) before writing anything, reporting the stable `XLSX_UNPROTECT_PACKAGE_TYPE_MISMATCH` reference.

@consultchimps/core

v0.6.0Full changelog

Shared contracts and errors for ConsultChimps operations.

0.6.0

  • Keep a local record of every CLI run. Each command that does work writes one JSON Lines file with the machine it ran on, every progress event with its time, memory sampled every second, and how it ended, so a slow or failed run can be explained afterwards. Records hold counts, sizes, and timings only; `--log-names` adds file names, progress details, and error messages. `--no-log` or `CONSULTCHIMPS_LOG=off` turns recording off, `--cpu-profile` also saves a CPU profile, and `consultchimps logs`, `logs show`, and `logs path` read the records.
  • Raise the supported Node.js floor from 22.0.0 to 22.14.0. Continuous integration now tests that exact version: pnpm 11 requires 22.13, and better-sqlite3 13 crashes on the 22.13 patch line, so 22.14.0 is the lowest release on which every published package works.
  • Group staged imports under `db import prepare`, `inspect`, `update`, and `apply`. Use `db import run` for one-step execution, `--profile` for reusable settings, and `--batch` for a saved review. Rename the library contracts to import profiles and batches while preserving the current stored database and batch formats.

0.5.1

  • Declare support for Node.js 22 and later (`engines.node: ">=22.0.0"` instead of `24.x`), so the toolkit installs and runs in environments that ship the previous LTS line. CI now validates the runtime on Node 22.16, the latest 22, and 26 alongside the full Node 24 verification. The CLI additionally ships a standalone `consultchimps.mjs` bundle on each GitHub release: one file that runs with `node consultchimps.mjs` and needs no npm access at all.

0.5.0

  • Centralize portable filename sanitization in `@consultchimps/core`, which now exports `safeNameFragment` and `truncateToUtf8Bytes`. The PDF and Excel operations share that single implementation instead of keeping their own copies, so every generated output name follows the same rules.

@consultchimps/db

v0.2.1Full changelog

Persistent local SQLite and DuckDB databases, imports, batch history, and validated conversion for ConsultChimps.

0.2.1

Dependency updates only

0.2.0

  • Add `@consultchimps/db/sqlite-read` for temporary read-only SQLite catalogs in Node and browser workers. The entry uses the official SQLite WASM runtime, preserves 64-bit integers and binary values, provides configurable read limits, and creates no persistent workspace files.
  • Raise the supported Node.js floor from 22.0.0 to 22.14.0. Continuous integration now tests that exact version: pnpm 11 requires 22.13, and better-sqlite3 13 crashes on the 22.13 patch line, so 22.14.0 is the lowest release on which every published package works.
  • Group staged imports under `db import prepare`, `inspect`, `update`, and `apply`. Use `db import run` for one-step execution, `--profile` for reusable settings, and `--batch` for a saved review. Rename the library contracts to import profiles and batches while preserving the current stored database and batch formats.
  • The native database engines now load when a database opens, not when `@consultchimps/db/node` is imported, so the portable single-file CLI no longer loads `better-sqlite3` and `@duckdb/node-api` for `--version`, `--help`, or any command that opens no database. An engine that cannot load is now reported when a database of that format opens, as `DB_NATIVE_ENGINE_UNAVAILABLE` rather than as a problem with the file.

@consultchimps/files

v0.5.0Full changelog

File discovery and safe output handling for ConsultChimps.

0.5.0

  • Raise the supported Node.js floor from 22.0.0 to 22.14.0. Continuous integration now tests that exact version: pnpm 11 requires 22.13, and better-sqlite3 13 crashes on the 22.13 patch line, so 22.14.0 is the lowest release on which every published package works.
  • Group staged imports under `db import prepare`, `inspect`, `update`, and `apply`. Use `db import run` for one-step execution, `--profile` for reusable settings, and `--batch` for a saved review. Rename the library contracts to import profiles and batches while preserving the current stored database and batch formats.

0.4.0

  • Consolidation can now fold columns that are named differently into one column each, using the versioned JSON column mapping document.

0.3.3

  • Declare support for Node.js 22 and later (`engines.node: ">=22.0.0"` instead of `24.x`), so the toolkit installs and runs in environments that ship the previous LTS line. CI now validates the runtime on Node 22.16, the latest 22, and 26 alongside the full Node 24 verification. The CLI additionally ships a standalone `consultchimps.mjs` bundle on each GitHub release: one file that runs with `node consultchimps.mjs` and needs no npm access at all.

@consultchimps/messages

v0.7.0Full changelog

Plain-language explanations of ConsultChimps results and errors for CLIs and user interfaces.

0.7.0

  • Raise the supported Node.js floor from 22.0.0 to 22.14.0. Continuous integration now tests that exact version: pnpm 11 requires 22.13, and better-sqlite3 13 crashes on the 22.13 patch line, so 22.14.0 is the lowest release on which every published package works.
  • Group staged imports under `db import prepare`, `inspect`, `update`, and `apply`. Use `db import run` for one-step execution, `--profile` for reusable settings, and `--batch` for a saved review. Rename the library contracts to import profiles and batches while preserving the current stored database and batch formats.
  • Skip title rows and spacer columns when reading worksheets. The header row is now the first row holding more than half as many values as the fullest of the ten populated rows below it, or at most one value fewer, so a report title, a merged banner, or a "Prepared by" line above a table four or more columns wide no longer becomes the first column name. A row is skipped only on evidence that it cannot be the header of the block below it, a blank row between the two or every value on it sitting in a cell merged across columns, and never when the skipped rows form a table of their own (two adjacent populated rows, neither a banner); otherwise the first row holding a value stays the header, as it always was, so no row of a table is ever lost to the detection. The inspection's `headerColumns` metric now counts the kept columns. A column that holds nothing in the header row or in any row under it is a spacer and never reaches the output; a column with values under a blank header is kept and named `column_N` by its position among the columns that were kept. One rule decides this for the consolidation, the worksheet readers, the worksheet-records reader, and the inspection, so `sheets inspect` reports the header row and columns a consolidation will use, spelled the same way whatever the header cell's type; an error cell in a header row now names its column `#REF!` rather than Excel's internal code for it. A split looks for its column on the detected header row before searching the whole worksheet, so a title line that repeats the column's name no longer captures the split. A declared `headerRow` is never second-guessed. Consolidation results carry two new metrics, `skippedTitleRows` and `skippedSpacerColumns`, and every worksheet report carries the same two counts; the plain-language result says what was left out.

0.6.0

  • Explain a workbook unprotect result in plain language instead of the generic fallback. The new `sheets.unprotect` entry reports how many worksheet and workbook-structure protections were removed, including the case where there was nothing to remove, and a macro-enabled `.xlsm` output is now named as an Excel workbook rather than a bare file.

0.5.0

  • Consolidation can now fold columns that are named differently into one column each, using the versioned JSON column mapping document.

@consultchimps/pdf

v0.5.0Full changelog

PDF page operations for ConsultChimps.

0.5.0

  • Raise the supported Node.js floor from 22.0.0 to 22.14.0. Continuous integration now tests that exact version: pnpm 11 requires 22.13, and better-sqlite3 13 crashes on the 22.13 patch line, so 22.14.0 is the lowest release on which every published package works.

0.4.3

Dependency updates only

0.4.2

  • Declare support for Node.js 22 and later (`engines.node: ">=22.0.0"` instead of `24.x`), so the toolkit installs and runs in environments that ship the previous LTS line. CI now validates the runtime on Node 22.16, the latest 22, and 26 alongside the full Node 24 verification. The CLI additionally ships a standalone `consultchimps.mjs` bundle on each GitHub release: one file that runs with `node consultchimps.mjs` and needs no npm access at all.

@consultchimps/pptx

v0.7.1Full changelog

PowerPoint template inspection and population for ConsultChimps.

0.7.1

Dependency updates only

0.7.0

  • Raise the supported Node.js floor from 22.0.0 to 22.14.0. Continuous integration now tests that exact version: pnpm 11 requires 22.13, and better-sqlite3 13 crashes on the 22.13 patch line, so 22.14.0 is the lowest release on which every published package works.

0.6.5

Dependency updates only

@consultchimps/tabular

v0.5.0Full changelog

Runtime-neutral table operations for ConsultChimps.

0.5.0

  • Consolidate workbooks in two streaming passes (ADR 0006). The first pass reads each worksheet's header rows, spacer columns, column union, mapping, and column widths without keeping its rows; the second reads the rows again and writes them straight to the output. Memory now follows the largest worksheet rather than the sum of the inputs: ten workbooks of 15,000 rows each peak at a fraction of the memory they needed before. The command line writes the output to a staging file beside the destination and moves it into place only when every row is written, so a failed or cancelled run leaves nothing behind.
  • Raise the supported Node.js floor from 22.0.0 to 22.14.0. Continuous integration now tests that exact version: pnpm 11 requires 22.13, and better-sqlite3 13 crashes on the 22.13 patch line, so 22.14.0 is the lowest release on which every published package works.
  • Improve workbook table reading and make repeated column names deterministic.

0.4.0

  • Add the column mapping engine: a declarative, versioned way to fold the same field's different header spellings into one canonical column before tables are consolidated.
  • Declare support for Node.js 22 and later (`engines.node: ">=22.0.0"` instead of `24.x`), so the toolkit installs and runs in environments that ship the previous LTS line. CI now validates the runtime on Node 22.16, the latest 22, and 26 alongside the full Node 24 verification. The CLI additionally ships a standalone `consultchimps.mjs` bundle on each GitHub release: one file that runs with `node consultchimps.mjs` and needs no npm access at all.

0.3.0

  • Consolidation can now match columns whose headers differ only in case, spacing, or punctuation. Different systems often export the same schema with different header conventions - "Failed Checks" in one file, "Failed_Checks" in another, "Reviewer: Lead Contact" versus "Reviewer_Lead_Contact" - and until now each spelling became its own mostly-empty output column.

@consultchimps/theme

v0.2.0Full changelog

Runtime-neutral palette model and colour validation for ConsultChimps.

0.2.0

  • Raise the supported Node.js floor from 22.0.0 to 22.14.0. Continuous integration now tests that exact version: pnpm 11 requires 22.13, and better-sqlite3 13 crashes on the 22.13 patch line, so 22.14.0 is the lowest release on which every published package works.
  • Add the `@consultchimps/theme` package: a runtime-neutral, zero-dependency palette model with categorical, sequential, and semantic colours in light and dark, and a small API to resolve a colour role to a value for a mode. It includes a validation pass that returns structured results (never throws) for WCAG contrast and categorical distinctness, reusing the `dataviz` method, and ships one neutral placeholder palette. Client colours are supplied at runtime and never committed.

@consultchimps/xlsx

v0.19.0Full changelog

Excel workbook adapters, consolidation, and splitting for ConsultChimps.

0.19.0

  • `readWorksheetRecords` and its byte twin, which PowerPoint population reads through, now read through the streaming reader (ADR 0006) and render each cell's number format with numfmt, a maintained formatter, instead of SheetJS. Two numfmt defects are corrected locally until upstream fixes them: a General number with 10 or 11 integer digits and a fraction rounds as Excel shows it, and a time that rounds up to midnight shows the next day.
  • The table readers now read through the streaming reader consolidation uses (ADR 0006): `readWorkbookTables`, `readWorkbookWorksheets`, `readWorkbookExcelTables`, `readWorkbookNamedRanges`, their byte twins, and the input of a single-table split. Each input is parsed once instead of twice.
  • The published package no longer bundles SheetJS: every read goes through the streaming reader, and table ranges are read with the package's own helpers.

0.18.0

  • Skip title rows and spacer columns when reading worksheets. The header row is now the first row holding more than half as many values as the fullest of the ten populated rows below it, or at most one value fewer, so a report title, a merged banner, or a "Prepared by" line above a table four or more columns wide no longer becomes the first column name. A row is skipped only on evidence that it cannot be the header of the block below it, a blank row between the two or every value on it sitting in a cell merged across columns, and never when the skipped rows form a table of their own (two adjacent populated rows, neither a banner); otherwise the first row holding a value stays the header, as it always was, so no row of a table is ever lost to the detection. The inspection's `headerColumns` metric now counts the kept columns. A column that holds nothing in the header row or in any row under it is a spacer and never reaches the output; a column with values under a blank header is kept and named `column_N` by its position among the columns that were kept. One rule decides this for the consolidation, the worksheet readers, the worksheet-records reader, and the inspection, so `sheets inspect` reports the header row and columns a consolidation will use, spelled the same way whatever the header cell's type; an error cell in a header row now names its column `#REF!` rather than Excel's internal code for it. A split looks for its column on the detected header row before searching the whole worksheet, so a title line that repeats the column's name no longer captures the split. A declared `headerRow` is never second-guessed. Consolidation results carry two new metrics, `skippedTitleRows` and `skippedSpacerColumns`, and every worksheet report carries the same two counts; the plain-language result says what was left out.
  • Consolidate workbooks in two streaming passes (ADR 0006). The first pass reads each worksheet's header rows, spacer columns, column union, mapping, and column widths without keeping its rows; the second reads the rows again and writes them straight to the output. Memory now follows the largest worksheet rather than the sum of the inputs: ten workbooks of 15,000 rows each peak at a fraction of the memory they needed before. The command line writes the output to a staging file beside the destination and moves it into place only when every row is written, so a failed or cancelled run leaves nothing behind.
  • Keep a local record of every CLI run. Each command that does work writes one JSON Lines file with the machine it ran on, every progress event with its time, memory sampled every second, and how it ended, so a slow or failed run can be explained afterwards. Records hold counts, sizes, and timings only; `--log-names` adds file names, progress details, and error messages. `--no-log` or `CONSULTCHIMPS_LOG=off` turns recording off, `--cpu-profile` also saves a CPU profile, and `consultchimps logs`, `logs show`, and `logs path` read the records.
  • Raise the supported Node.js floor from 22.0.0 to 22.14.0. Continuous integration now tests that exact version: pnpm 11 requires 22.13, and better-sqlite3 13 crashes on the 22.13 patch line, so 22.14.0 is the lowest release on which every published package works.
  • Group staged imports under `db import prepare`, `inspect`, `update`, and `apply`. Use `db import run` for one-step execution, `--profile` for reusable settings, and `--batch` for a saved review. Rename the library contracts to import profiles and batches while preserving the current stored database and batch formats.
  • Write consolidated and split workbooks with a streaming worksheet writer built on fflate (ADR 0006), instead of building each one in memory through SheetJS. The writer deflates the worksheet XML row by row, so it no longer holds a copy of every row as an array, then as one cell object per value, before the file is written.
  • Improve workbook table reading and make repeated column names deterministic.

0.17.0

  • Bring the workbook unprotect operation up to the package standard. The XML edit now runs on the package layer through a new `WorkbookPackage.removeEmptyElements` seam instead of a regex inside the operation, unprotect gains a declared column in the conformance contract (every tracked structure is `preserve`, held up by a new corpus), and unprotect now refuses an output name whose extension contradicts the workbook's declared type with the new stable error `XLSX_UNPROTECT_PACKAGE_TYPE_MISMATCH`, before writing anything.