Repository navigation
Releases: HarperFast/fulltext
Release list
@harperfast/fulltext v0.8.0
Published to npm: @harperfast/fulltext 0.8.0 and all four matching native packages are available; latest points to 0.8.0.
Release correction: before any npm publication, Kyle approved moving v0.8.0 from the initial release commit to the supported-runner repair. Only two macOS runner labels changed; application sources are identical. The initial packaging attempt encountered GitHub's macOS 14 brownout. Original benchmark assets were preserved before restarting.
Compatibility: rebuild existing string-metadata indexes
Indexes with string filterFields need rebuilding when upgrading from 0.7.0. Version 0.8.0 adds raw fast fields for metadata sorting and aggregations. Incompatible indexes fail closed with E_IDENTITY_MISMATCH; do not edit identity sidecars to bypass the check.
Drain work and close every reader and writer, retire the old index with resetNativeFullTextIndex(), and rebuild from authoritative records using a new generation. Publish source-checkpoint coverage only after rebuilding, then verify reopen, filters, sorting and aggregations before cutover. Numeric/Boolean-only indexes retain compatibility when the rest of their configuration is unchanged. Always deploy matching JavaScript and native package versions.
See the metadata migration guide for upgrade, downgrade and recovery procedures. Earlier analyzer migration requirements still apply to upgrades from 0.6.x.
What changed
- Global multi-field metadata sorting, native nested aggregations and additional filter predicates: Add global metadata sorting, facets, and filter predicates.
- Per-handle analyzed-term and compiled-clause capacity, with shared structural admission: Make analyzed query capacity configurable per handle.
- Fuzzy edit-distance and transposition controls, native exact matching at distance zero, and aligned request validation: Expose fuzzy matching controls and align Rust request validation.
- Aligned release versions, stronger worker-fixture cleanup and test-only Windows diagnostics: Prepare fulltext 0.8.0 for release.
Tantivy remains 0.27.0. Distance-two fuzzy matching remains preview with no hard process-memory bound; qualify corpus and concurrency before exposing it to callers. Deadlines remain cooperative. Phrase slop is deferred; no unreleased Tantivy patch is included.
Verification and remaining uncertainty
The repaired release commit passed all 17 main CI jobs across Linux x64/arm64, macOS arm64 and Windows x64, including Node 22.18, 24 and 26. The publish workflow built all four native packages and the JavaScript facade, passed packed-consumer installs and public examples on all four platforms, and published all five packages with provenance.
Public registry checks verified every 0.8.0 package and the root latest dist-tag. A separate clean npm installation on macOS ARM64 reports wrapper 0.8.0 / Tantivy 0.27.0, with all nine shipped examples passing. The release benchmark workflow passed, and all eight Linux benchmark result files are attached.
Historical Windows stalls and sustained-memory qualification remain tracked in Qualify remaining native metadata collector resource tradeoffs. Passing CI does not establish their cause or production memory headroom.
Comment generated by kAIle (GPT-6)
@harperfast/fulltext v0.7.0
Compatibility: rebuild existing indexes
Upgrading from 0.6.x requires an index rebuild. Version 0.7.0 embeds Tantivy 0.27.0, whose English stemmer changes some indexed terms. Existing indexes are rejected with E_IDENTITY_MISMATCH before search or mutation, even when the public analyzer remains english@2.
Drain and close readers and writers, retire the old index with resetNativeFullTextIndex(), then rebuild from authoritative source records. Publish checkpoint coverage only after rebuilding. Before downgrading, retire the 0.7 index using the 0.7 reset API and rebuild with 0.6.x. Do not edit identity sidecars to force compatibility. See Upgrading from 0.6.x.
What changed
- Upgraded the embedded engine to Tantivy 0.27.0 and added explicit persisted analyzer compatibility checks and safe retirement/rebuild handling.
- Updated search collectors and shared version hydration, with native prefix automaton reuse and retained full-fuzzy dictionary parity.
- Added a runnable catalog-search example, relevance fixtures, migration guidance, and hydration/trace benchmark profiles.
The public analyzer name and query API remain unchanged. Relevance scores may differ between engine versions; continuation tokens remain tied to their reader instance. Applications continue to own source records, authorization, and rebuilding their derived indexes.
See Upgrade fulltext to Tantivy 0.27 with safe index rebuilds.
Verification
Main CI and the publish workflow passed on Linux x64/arm64, macOS arm64, and Windows x64. All four native packages passed packed-consumer installs and public examples before npm publication. A separate clean npm installation on macOS ARM64 reports wrapper 0.7.0 / Tantivy 0.27.0 and passes every shipped example. The release benchmark workflow passed; all eight Linux benchmark result files are attached.
Comment generated by kAIle (GPT-6)
@harperfast/fulltext v0.6.0
What changed
- Added
searchPage()for ranked full-text, prefix, fuzzy-prefix, and Boolean results beyond the ordinary 10,000-hit window and 100-hit autocomplete limit. - Added authenticated continuations tied to the query and retained reader snapshot, exact snapshot totals, bounded page collection, and traversal deadline checks.
- Documented query and resource limits, reader cleanup, and integration requirements. Existing
search()limits remain unchanged.
See Add bounded snapshot traversal for full-text and autocomplete results.
Compatibility and operating considerations
- Native ABI 9 and query API 4 require matching 0.6.0 facade and native packages. No analyzer or index-data rebuild is required by traversal.
- Direct Rust
SearchRequestvalues now requiretraversalandafter.Engine::searchenforces the checked 10,000-hit ordinary offset window. - Keep a dedicated reader open without reloading while traversing its original snapshot. Close it when finished or expired; retained snapshots can keep old index files on disk. Continuations cannot move between handles or processes or survive a restart.
- Each page scans matching documents again. Bound cumulative work and concurrent readers; deadlines cannot interrupt query construction or every Tantivy operation.
- Applications remain responsible for current authorization, source-record/version checks, and cursor routing and expiration. Harper integration is separate.
Verification
Local checks passed, including 250 Rust/Node/worker/consumer checks, optimized concurrency tests, traversal qualification, dependency checks, and documentation verification. PR CI passed on Linux x64/arm64, macOS arm64, and Windows x64. The release workflow separately rebuilds and verifies the exact platform packages before npm publication.
Comment generated by kAIle (GPT-6)
@harperfast/fulltext v0.5.0
What's Changed
- Add structured native filters and prepare 0.5.0 by @kylebernhardy in #48
Full Changelog: v0.4.0...v0.5.0
@harperfast/fulltext v0.4.0
What's Changed
- Optimize stable full-text pagination and update Tantivy by @kylebernhardy in #46
- Prepare @harperfast/fulltext v0.4.0 by @kylebernhardy in #47
Full Changelog: v0.3.0...v0.4.0
@harperfast/fulltext v0.3.0
What's Changed
- Complete native full-text query and reader support by @kylebernhardy in #45
Full Changelog: v0.2.0...v0.3.0
v0.2.0
Comment generated by kAIle (GPT-6 Astra)
What's Changed
- Complete the native full-text runtime contract by @kylebernhardy in #42
- Fix the packed-consumer release gate by @kylebernhardy in #44
Full Changelog: v0.1.2...v0.2.0
v0.1.2
What's Changed
- Add Linux ARM64 support to the fulltext package by @kylebernhardy in #41
Full Changelog: v0.1.1...v0.1.2
v0.1.1
What's Changed
- Repair native npm package publication by @kylebernhardy in #39
- Monitor Tantivy releases without suppressing security updates by @kylebernhardy in #40
Full Changelog: v0.1.0...v0.1.1
v0.1.0
What's Changed
- Add the @harperfast/fulltext native package scaffold by @kylebernhardy in #19
- Prove Tantivy directories over caller-owned RocksDB storage by @kylebernhardy in #20
- Implement native Tantivy backend and performance baseline by @kylebernhardy in #21
- Add bounded host storage transport for Tantivy by @kylebernhardy in #22
- Use fixed chunks for Harper-backed Tantivy files by @kylebernhardy in #23
- Prevent Harper full-text index key collisions by @kylebernhardy in #24
- Track directory object high-water marks by @kylebernhardy in #25
- Enqueue deleted directory objects for reclamation by @kylebernhardy in #26
- Protect Harper-backed Tantivy readers during reclamation by @kylebernhardy in #27
- Add bounded reclamation for Harper-backed Tantivy directories by @kylebernhardy in #28
- Add priority-aware host reclamation transport by @kylebernhardy in #29
- Add experimental Harper-backed Fulltext runtime by @kylebernhardy in #30
- Add checkpointed publication to native full-text indexes by @kylebernhardy in #31
- Reject native writer operations after terminal failure by @kylebernhardy in #32
- Distinguish oversized mutation batches by @kylebernhardy in #33
- Remove retired hosted storage implementation by @kylebernhardy in #34
- Add read-only native index inspection by @kylebernhardy in #35
- Add safe native index reset and quiescent close by @kylebernhardy in #36
- Add exact native mutation batch partitioning by @kylebernhardy in #37
- Add bounded full-text queries and native package distribution by @kylebernhardy in #38
New Contributors
- @kylebernhardy made their first contribution in #19
Full Changelog: https://github.com/HarperFast/fulltext/commits/v0.1.0