All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog, and this project follows semantic versioning.
- Physical Quantity Arithmetic — Cross-type multiplication and division now produces correct derived units:
length × length → area,area × length → volume,voltage × current → power,energy ÷ time → power,power × time → energy,voltage ÷ resistance → current,current × resistance → voltage,force ÷ area → pressure,pressure × area → force - Temperature conversion —
°F↔°C↔Know uses proper offset formulas via Kelvin intermediary (98.6 F to C→"37 C") - React example — New
examples/react/directory with a Vite-powered unit converter app (12 quick-convert presets,npm run devto start) - Derived unit results support
toconversions (5 m * 3 m to cm2→"150000 cm2")
- Renamed
src/utils/globalUnits.js→src/utils/units.js
- Unit tokenizer case sensitivity — Uppercase unit keys (
V,A,F,C,K,Hz,W, etc.) now recognized - Unit name disambiguation — Duplicate unit names (
F: farad/Fahrenheit,rad: angle/radiation,S/s: siemens/second) are resolved by context of the paired unit.1 F to mF→ farad (capacitance),98.6 F to C→ Fahrenheit (temperature)
- ESLint (v10 flat config) with strict rules, Prettier formatting, and TypeScript JSDoc type checking
- Husky pre-commit hook with lint-staged for automatic linting and formatting on commit
- Dependabot config for weekly automated dependency pull requests
- CodeQL security analysis workflow on push/PR/schedule
- Bundle size monitoring via size-limit (min.js: 30 KB, esm.js: 60 KB)
- Jest coverage reporting (
npm run test:coverage) with CI artifact upload - Node.js 24 to CI test matrix (previously 20 and 22 only)
.editorconfigfor cross-editor consistency// @ts-checkannotations to all 14 source filesenginesfield requiring Node >=18
- Upgraded Rollup from v2 to v4 with updated plugin versions
- Replaced rimraf with built-in
fs.rmSyncfor the clean script - Replaced nodemon with Node.js built-in
--watchflag for the dev script - CI workflow now runs lint, typecheck, size check, and coverage in addition to tests
- Switched CI workflows to Node 24 for publish and audit jobs
- Added
--no-warningsflag to test scripts to suppress ExperimentalWarning
- All ESLint errors (no-unused-vars, no-undef, eqeqeq, prefer-const, camelcase, etc.)
- All TypeScript type errors (err unknown type, null checks, variable store reference)
- lint-staged Windows ENOENT error by switching from package.json config to
lint-staged.config.jswith directnodeinvocation
- Unused Babel dependencies (@babel/cli, @babel/core, @babel/preset-env)
- Unused rollup-plugin-strip-banner, glob, and rimraf dev dependencies
overridessection (test-exclude, glob pins) — no longer needed with Jest 30nodemondevDependency (replaced bynode --watch)
- Corrected the import path in
src/index.jsto match the actual filename casing ofsrc/core/Exprify.js. - Resolved a cross-platform build issue where Rollup failed on Linux-based CI environments because of case-sensitive path resolution.