quickmatch 0.4.0

Lightning-fast fuzzy string matching with hybrid word and trigram indexing
Documentation
<!-- This changelog was generated by Claude Code -->

# Changelog

## [v0.3.1]https://github.com/nym21/quickmatch/releases/tag/v0.3.1 - 2026-01-22

### New Features

#### JavaScript
- Added comprehensive JSDoc type annotations for `QuickMatchConfig` class properties (`separators`, `limit`, `trigramBudget`) and all public methods (`withLimit()`, `withTrigramBudget()`, `withSeparators()`, `matches()`, `matchesWith()`) ([source]https://github.com/nym21/quickmatch/blob/v0.3.1/src/index.js)
- Added `@private` annotations for internal methods (`scoreByTrigrams()`, `sortedByLength()`, `rankedResults()`) to indicate non-public API
- Added explicit type annotations to Map types: `Map<string, number[]>` for `wordIndex` and `trigramIndex`
- Added `jsconfig.json` with TypeScript-style type checking enabled (`checkJs: true`, `strict: true`) for improved IDE support and static analysis ([source]https://github.com/nym21/quickmatch/blob/v0.3.1/jsconfig.json)

### Internal Changes

#### JavaScript
- Renamed `trigramCount` variable to `hitCount` for consistency with Rust implementation
- Normalized string quotes to double quotes throughout the codebase
- Reformatted multi-line function parameters for readability

[View changes](https://github.com/nym21/quickmatch/compare/v0.3.0...v0.3.1)

---

## [v0.3.0]https://github.com/nym21/quickmatch/releases/tag/v0.3.0 - 2026-01-22

### New Features

#### JavaScript
- Added complete JavaScript port of the library with identical API to Rust, published as `quickmatch-js` npm package ([source]https://github.com/nym21/quickmatch/blob/v0.3.0/src/index.js)
- Implemented `QuickMatch` class with word indexing and trigram-based fuzzy matching
- Implemented `QuickMatchConfig` class with builder methods (`withLimit()`, `withTrigramBudget()`, `withSeparators()`)
- Implemented `matches()` and `matchesWith()` methods returning results sorted by relevance
- Uses ES modules (`"type": "module"`) for modern JavaScript compatibility

#### Documentation
- Added JavaScript installation instructions to README (`npm install quickmatch-js`)

### Internal Changes

#### Rust
- Renamed `trigram_count` to `hit_count` to clarify it tracks successful trigram matches rather than total attempts ([source]https://github.com/nym21/quickmatch/blob/v0.3.0/src/lib.rs)
- Changed trigram budget tracking from increment-based (`trigram_count += 1`) to decrement-based (`budget -= 1`) for clearer remaining budget visibility
- Simplified trigram processing loop by removing `processed_trigrams` flag and using direct budget check (`if budget == 0`) for early termination

[View changes](https://github.com/nym21/quickmatch/compare/v0.2.0...v0.3.0)

---

## [v0.2.0]https://github.com/nym21/quickmatch/releases/tag/v0.2.0 - 2026-01-14

### New Features

#### Rust
- Initial release of `quickmatch` - a fuzzy string matching library for autocomplete and search-as-you-type interfaces
- Added `QuickMatch` struct implementing hybrid matching with word-level indexing and trigram-based fuzzy fallback ([source]https://github.com/nym21/quickmatch/blob/v0.2.0/src/lib.rs)
- Added `QuickMatchConfig` for customizing match behavior with builder pattern methods ([source]https://github.com/nym21/quickmatch/blob/v0.2.0/src/config.rs):
  - `with_limit(n)` - Set maximum results (default: 100)
  - `with_trigram_budget(n)` - Set fuzzy matching depth (default: 6, range: 0-20)
  - `with_separators(chars)` - Set word separator characters (default: `_`, `-`, ` `)
- Added `new()` constructor for default configuration and `new_with()` for custom configuration
- Added `matches()` and `matches_with()` methods returning results ranked by match quality and length
- Implemented thread-safe design with `Send` and `Sync` traits for concurrent usage
- Added zero-copy string storage using pointer-based indexing for memory efficiency
- Implemented smart trigram selection algorithm that samples trigrams at strategic positions (first, last, middle, then alternating) for efficient fuzzy matching
- Added interactive autocomplete example demonstrating product search functionality ([source]https://github.com/nym21/quickmatch/blob/v0.2.0/examples/autocomplete.rs)

[View changes](https://github.com/nym21/quickmatch/compare/e310f20...v0.2.0)