# Changelog

## 4.1.12 - 2026-11-03

<!-- npm-release:unreleased:start -->
<!-- npm-release:unreleased:end -->

- Skip no-op releases and restate malformed remediation dispositions (#61) ([c208405](https://github.com/fitchmultz/pi-calculator/commit/c20840532f0216aaddd970a561b79853015405ed))

### What's Changed

- Skip no-op releases and restate malformed remediation dispositions by @fitchmultz in https://github.com/fitchmultz/pi-calculator/pull/61

**Full Changelog**: https://github.com/fitchmultz/pi-calculator/compare/v4.1.11...v4.1.12

## 4.1.11 - 2026-11-02

<!-- npm-release:unreleased:start -->
<!-- npm-release:unreleased:end -->

- Recheck unreported Cursor reviews in automatic releases (#58) ([63ec250](https://github.com/fitchmultz/pi-calculator/commit/63ec25092a4a718592e548730f0c6c791a09b7c4))

### What's Changed

- Recheck unreported Cursor reviews in automatic releases by @fitchmultz in https://github.com/fitchmultz/pi-calculator/pull/58

**Full Changelog**: https://github.com/fitchmultz/pi-calculator/compare/v4.1.10...v4.1.11

## 4.1.10 - 2026-11-02

<!-- npm-release:unreleased:start -->
<!-- npm-release:unreleased:end -->

- Raise the Pi floor to 1.5.0 (#56) ([07b253d](https://github.com/fitchmultz/pi-calculator/commit/07b253d853625679f0d31e77831a4adf2c7b1354))

### What's Changed

- Raise the Pi floor to 1.5.0 by @fitchmultz in https://github.com/fitchmultz/pi-calculator/pull/56

**Full Changelog**: https://github.com/fitchmultz/pi-calculator/compare/v4.1.9...v4.1.10

## 4.1.9 - 2026-11-01

<!-- npm-release:unreleased:start -->
<!-- npm-release:unreleased:end -->

- Record the integrated verification results for both adoptions (#54) ([2d7b601](https://github.com/fitchmultz/pi-calculator/commit/2d7b601e340b2b21f0160532b318434130215eee))

### What's Changed

- Record the integrated verification results for both adoptions (1/1) by @fitchmultz in https://github.com/fitchmultz/pi-calculator/pull/54

**Full Changelog**: https://github.com/fitchmultz/pi-calculator/compare/v4.1.8...v4.1.9

## 4.1.8 - 2026-11-01

<!-- npm-release:unreleased:start -->
<!-- npm-release:unreleased:end -->

- Adopt the standard at v5.1.2 (1/1) (#52) ([a395ff7](https://github.com/fitchmultz/pi-calculator/commit/a395ff7b2c189eceff10d5a129b6e1d4a69ee5f1))

### What's Changed

- Adopt the standard at v5.1.2 (1/1) by @fitchmultz in https://github.com/fitchmultz/pi-calculator/pull/52

**Full Changelog**: https://github.com/fitchmultz/pi-calculator/compare/v4.1.7...v4.1.8

## 4.1.7 - 2026-11-01

<!-- npm-release:unreleased:start -->
<!-- npm-release:unreleased:end -->

- Adopt the strict quality policy baseline and current Pi practice (#48) ([50e0e33](https://github.com/fitchmultz/pi-calculator/commit/50e0e33a0443a2d0ec1c12a5cf4080342ba61850))

### What's Changed

- Adopt the strict quality policy baseline and current Pi practice by @fitchmultz in https://github.com/fitchmultz/pi-calculator/pull/48

**Full Changelog**: https://github.com/fitchmultz/pi-calculator/compare/v4.1.6...v4.1.7

## 4.1.6 - 2026-11-01

<!-- npm-release:unreleased:start -->
<!-- npm-release:unreleased:end -->

- Use direct Flash for automatic release remediation (#49) ([544c540](https://github.com/fitchmultz/pi-calculator/commit/544c540e8d12cbe0ec8c6cde7050628f41700a4e))

### What's Changed

- Use direct Flash for necessary release remediation by @fitchmultz in https://github.com/fitchmultz/pi-calculator/pull/49

**Full Changelog**: https://github.com/fitchmultz/pi-calculator/compare/v4.1.5...v4.1.6

## 4.1.5 - 2026-11-01

<!-- npm-release:unreleased:start -->
<!-- npm-release:unreleased:end -->

- Restore local extension-load verification by aligning the locked Pi development cohort to 1.4.0.
- Pin reviewed release source binding (#46) ([2a75d8b](https://github.com/fitchmultz/pi-calculator/commit/2a75d8beebdf247c7703d35b8a5944ab7b9cf7cb))

### What's Changed

- Bind automatic releases to the reviewed version by @fitchmultz in https://github.com/fitchmultz/pi-calculator/pull/46

**Full Changelog**: https://github.com/fitchmultz/pi-calculator/compare/v4.1.4...v4.1.5

## 4.1.4 - 2026-10-31

<!-- npm-release:unreleased:start -->
<!-- npm-release:unreleased:end -->

- Enable reviewed npm version remediation (#44) ([20c90cf](https://github.com/fitchmultz/pi-calculator/commit/20c90cfb5e28452cfa3f7bf2d7923659b6b18a86))

### What's Changed

- Enable reviewed npm version remediation by @fitchmultz in https://github.com/fitchmultz/pi-calculator/pull/44

**Full Changelog**: https://github.com/fitchmultz/pi-calculator/compare/v4.1.3...v4.1.4

## 4.1.3 - 2026-10-31

<!-- npm-release:unreleased:start -->
<!-- npm-release:unreleased:end -->

- Enable reviewed automatic npm releases (#42) ([f7ce653](https://github.com/fitchmultz/pi-calculator/commit/f7ce6539ac13a509750e4960c4ef5182c5530b40))

### What's Changed

- Enable reviewed automatic npm releases by @fitchmultz in https://github.com/fitchmultz/pi-calculator/pull/42

**Full Changelog**: https://github.com/fitchmultz/pi-calculator/compare/v4.1.2...v4.1.3

## 4.1.2 - 2026-10-31

- Refresh installation and reference documentation while preserving unpinned npm and Git sources and migration guidance.
- Refresh the development lockfile and compatibility workflow references.

## 4.1.1 - 2026-10-04

- Publish the existing calculator as the public scoped package `@fitchmultz/pi-calculator`, continuing the 4.1.x version line. The unrelated unscoped npm package is not this project.
- Lead installation guidance with the scoped npm source while preserving Git installation, existing tags, and the calculator's numerical, schema, structured-result, rendering, and native-composition contracts.
- Qualify the latest stable official Pi and maintained fork main with once-frozen host identities, and add a main-only gated repository release pipeline.

## 4.1.0 - 2026-10-01

- Require Pi 1.0.0 and qualify its exact published cohort with host TypeBox 1.3.27.
- Expose the existing expression/value outcome through native structured output for nested callers, preserving decimal strings, scalar/array behavior, grammar, work limits, errors, and rendering.
- Exercise native nested scalar/array receipts and distinct validation, policy, and evaluation failures without provider calls. Keep Git/GitHub-only distribution.

## 4.0.0 - 2026-09-26

### Breaking changes

- Require Node.js 24 or later.

### Changed

- Qualify development against Pi 0.87.1 and the TypeBox version Pi ships (1.3.27), on Node 24 for both official Pi and the maintained fork.
- Type-check with Node 24 types and explicit Node module resolution under TypeScript 7.

## 3.0.0 - 2026-09-21

### Breaking changes

- Replace `deg(x)` with `radians(x)` for degrees-to-radians conversion, and `rad(x)` with `degrees(x)` for radians-to-degrees conversion. The old names are removed without aliases.
- Return value-only model content instead of `expression = value`. Details retain the trimmed expression and a value that can now be a decimal string or an array of decimal strings.

### Added

- Evaluate independent calculations in one flat array. Reject nested, nonnumeric, or nonfinite results as a whole, and reject serialized expression/value details larger than 50 KiB.
- Show safely escaped expressions in native Pi tool cards while keeping model output concise.
- Request native strict-prefer JSON-schema sampling with provider-controlled fallback.

### Changed

- Pass Decimal values directly through the parser while preserving decimal-literal precision, numerical algorithms, private contexts, and work limits.
- Clarify percentage argument order, population/sample standard deviation, logarithm bases, small-argument `expm1`/`log1p`, and when to combine calculations or skip a trivial tool call.
- Qualify development against Pi 0.87.0 and TypeBox 1.3.34; declare host-provided Pi TUI as an optional peer. The package remains private and Git-distributed.

### Fixed

- Require finite inputs consistently for aggregates, including `min`, `max`, and `hypot`/`pyt`.

## 2.0.2 - 2026-09-18

### Fixed

- Preserve tangent accuracy near poles by dividing guarded sine and cosine values.
- Preserve cancellation remainders in sums without allocating across large exponent gaps, and round means and even medians only after division.
- Center standard-deviation calculations before averaging so identical measurements have zero spread and large common offsets do not distort the result.
- Reject non-finite measurements in statistics, including medians that previously hid invalid square roots or division by zero.

### Added

- Regression checks for numeric correctness and GitHub CI verification on the minimum supported Node version and Node 24.

## 2.0.1 - 2026-08-08

### Fixed

- Restrict evaluation to null-prototype deterministic allowlists instead of inheriting broken parser functions, operators, or object properties.
- Evaluate supported scientific helpers in a private Decimal context, including cancellation-safe `expm1`/`log1p`, hyperbolic functions, `pow`, `atan2`, `sum`, `sign`, and `trunc`.
- Return the requested element for array indexes instead of always coercing wrapped indexes to zero.
- Preserve single-quoted numeric strings and quoted `**` text during literal rewriting, and reject unsupported comments.
- Accept negative zero factorials, correctly round factorials once from an exact BigInt result, and reject extra function arguments.
- Restore the full 40-digit `E` constant, round input literals to the documented precision, reset Decimal state after every evaluation, cap nesting deterministically, and replace raw dependency errors with stable calculator errors.
- Disable member access and unadvertised conditional, comparison, logical, higher-order, random, string-escape, comment, and multi-expression operations.
- Bound circular and hyperbolic trig operands plus modulo exponent gaps with a shared work budget to prevent synchronous CPU amplification.

### Changed

- Keep only stable expression and value fields in tool details and trim always-on prompt guidance.
- Limit npm package contents to runtime source and documentation.

## 2.0.0 - 2026-08-06

### Changed

- Require Pi 0.84.0 or later.
- Import the host-provided TypeBox package directly, following the Pi 0.84 extension contract.
- Format very large integers in scientific notation so calculator output stays below Pi's 50KB tool-output limit.
- Keep evaluation details JSON-safe by removing the lossy JavaScript number conversion.
- Escape line breaks in displayed expressions so tool results stay within Pi's 2,000-line output limit.

### Added

- Type checking and an actual Pi 0.84 extension-load check to the release verification command.
