# Changelog

## 2026-04-30 - 3.2.7 - fix(build)
migrate project metadata to .smartconfig and tighten TypeScript build settings

- replace npmextra.json with .smartconfig.json and update packaged config file references
- upgrade build and test toolchain dependencies along with related package versions
- remove the build flag that allowed implicit any and enforce noImplicitAny in tsconfig
- add repository issue tracker metadata and refresh package manager version

## 2025-09-12 - 3.2.6 - fix(ci)
Add .claude local settings to permit web fetch to www.npmjs.com

- Added .claude/settings.local.json granting WebFetch permission for www.npmjs.com
- Configuration-only change; no runtime or library code modified

## 2025-09-12 - 3.2.5 - fix(ts_web)
Ensure sha256FromBuffer uses correct ArrayBuffer slice for Uint8Array inputs and add local project config files

- Fix sha256FromBuffer in ts_web: explicitly slice Uint8Array.buffer using byteOffset/byteLength before calling crypto.subtle.digest to ensure the correct ArrayBuffer segment is hashed in browser environments.
- Add .claude/settings.local.json to allow WebFetch to www.npmjs.com for local tooling.
- Add .serena/.gitignore and .serena/project.yml to include project-specific configuration and ignored cache path.
- Add missing newline at end of ts_web/index.ts

## 2025-09-12 - 3.2.4 - fix(deps)
Bump devDependencies, update smartjson and add workspace/CI settings

- Bump @git.zone/tsbuild from ^2.1.70 to ^2.6.8
- Bump @git.zone/tstest from ^2.3.2 to ^2.3.8
- Bump @push.rocks/smartjson from ^5.0.10 to ^5.2.0
- Add pnpm-workspace.yaml with onlyBuiltDependencies: esbuild, mongodb-memory-server, puppeteer
- Add .claude/settings.local.json to allow WebFetch access to www.npmjs.com

## 2025-08-03 - 3.2.3 - fix(dependencies/config)
Update dependency versions and add local settings for web fetch configuration

- Bump @git.zone/tstest from ^1.0.81 to ^2.3.2
- Bump @push.rocks/smartenv from ^5.0.5 to ^5.0.13
- Add .claude/settings.local.json to allow WebFetch permissions for www.npmjs.com

## 2025-08-03 - 3.2.1 - docs(readme)
Enhance readme with comprehensive documentation and modern formatting

- Updated readme.md with enhanced formatting, emojis, and badges
- Added comprehensive API reference with clear examples for all functions
- Included environment compatibility table showing Node.js vs Browser support
- Added advanced usage examples including error handling and import strategies
- Improved documentation structure with better visual organization
- Fixed typo in sha265FromObject examples to sha256FromObject

## 2025-06-19 - 3.2.0 - feat(package)
Update package.json to use exports field for dual entry points

- Replaced the main and typings fields with an exports object that supports both default and web entry points
- Ensures consistency in module resolution between Node.js and browser environments

## 2025-06-19 - 3.1.0 - feat(browser)
Implement fallback SHA256 for non-HTTPS environments and enhance browser tests for consistent hashing

- Added a pure JavaScript SHA256 fallback in ts_web/sha256.fallback.ts for environments without crypto.subtle
- Updated ts_web/index.ts to use the fallback when necessary
- Enhanced browser tests in test/test.browser.ts to verify consistent hash outputs
- Reflected new features in documentation updates (readme.plan.md)

## 2025-06-19 - 3.0.4 - feat  
Merge isohash functionality into smarthash to enable cross‐environment hash support. This release introduces browser‐compatible SHA256 functions via the Web Crypto API and plugins for environment detection and JSON handling.

- Added new plan and implementation steps to merge isohash into smarthash.
- Updated test files to use the new tapbundle import.
- Implemented browser‐specific hashing functions in ts_web/index.ts and ts_web/plugins.ts.
- Created browser tests in test/test.browser.ts for SHA256 functions.
- Ensured consistent smarthash functionality across environments.

Note: Several non–breaking maintenance updates (e.g. description, tsconfig, and npmextra.json adjustments) were applied between 2024 and 2023 alongside version marker commits.

---

## 2023-09-22 to 2022-06-26 - 3.0.0 - Maintenance  
Between versions 3.0.3 and 3.0.0, a series of core fixes and organizational improvements were rolled out.

- Multiple “fix(core)” commits addressed various update needs.
- A couple of releases also switched to a new organization scheme.
- Routine maintenance commits ensured stability across these versions.

---

## 2022-06-26 - 2.1.10 - BREAKING CHANGE  
A major change was introduced by switching the module system.

- BREAKING CHANGE(core): Switched to ESM, requiring consumers to update their imports accordingly.

---

## 2021-03-01 to 2019-11-21 - 2.1.0 - Maintenance  
Across versions 2.1.9 down to 2.1.0, the project received multiple fixes and CI updates.

- Repeated “fix(core)” commits improved internal stability.
- A “fix(ci)” update was also introduced to streamline continuous integration processes.

---

## 2019-11-21 - 2.0.6 - feat  
New functionality was added to expand the available hashing algorithms.

- feat(md5): Now creates MD5 hashes, broadening the project’s cryptographic capabilities.

---

## 2019-07-04 to 2018-09-07 - 2.0.0 - Maintenance  
This range of releases was dedicated to refining core functionality and enhancing security.

- Numerous “fix(core)” commits ensured consistent behavior.
- A “fix(snyk)” commit added a .snyk file and marked the project as Open Source for improved security auditing.

---

## 2018-09-07 - 1.0.4 - BREAKING CHANGE  
A breaking change was introduced by renaming the package scope.

- BREAKING CHANGE(scope): Changed the package name to @pushrocks/smarthash, requiring updates for consumers referencing the old name.

---

## 2016-08-16 to 2016-05-23 - 1.0.0 - Initial Setup  
During the early days of the project, core implementation and structure were established.

- Early commits included the initial implementation (“implementation is ready”), package metadata adjustments (e.g. “update package tags”, “fix README”), and structural additions (“add structure”).
- The journey began with the Initial commit on 2016-05-23, setting the groundwork for future development.