Repository navigation
π A little overdue, but this release knocks out a healthy selection of bug reports, and includes a lot of work from the community. Thanks to everyone who contributed β€οΈ - @bglw
Multilingual Segmentation
Pagefind's extended build now segments Chinese, Japanese, and Thai pages with ICU4X, replacing the previous dependency (PR #1383). Alongside producing a smaller binary, ICU4X segments a lot closer to the Intl.Segmenter used in the browser on the search query (which is ICU4C). This closes out a mixture of latent and reported issues where the different segmentation between indexing and searching makes for iffy results. It's not perfect yet, but it's a darn sight closer.
Bonuses:
- Segmentation is smarter in languages such as Thai, and doesn't break inside a grapheme cluster
- Japanese katakana has special handling, but should still be improved over 1.5.2
- Japanese voiced and semi-voiced sound marks are no longer normalized into each other
Fewer Fragment Files
Pagefind now has an option to limit the total number of fragment files produced, for hosting providers that cap the number of uploaded files. Contributed in PR #1020 β thanks @yakovsh !
This limit is set with --max-fragments / max_fragments, and applies per language. When applied, multiple fragments are bundled together and loaded as a set when required.
See π Max fragments.
Explicit Sub-Result Titles
Added support for explicit sub-result titles. Any element with both an id and a data-pagefind-title attribute can be used as a sub-result (PR #1282 β thanks @samuel-williams-shopify !)
See π Defining a sub result explicitly.
Component UI
- Added a
sortattribute to<pagefind-config>, to order results by a sort key (PR #1326) - Added a
max-sub-resultsattribute to<pagefind-searchbox>(PR #1324) - Added a
placeholdersetter to<pagefind-searchbox>and<pagefind-modal-trigger>(PR #1321) configureInstancenow applies to an instance that already exists but has not loaded yet (PR #1323)- Fixed the UI language being resolved after the first render, which could flash the wrong translations (PR #1332)
- Fixed component cleanup after being disconnected (PR #1322)
- Fixed IME composition keystrokes support (PR #1284 β thanks @oharu121 !)
- Fixed the modal staying open when clicking a result for the current page (PR #1327)
- Fixed the filter panel checkbox shrinking when its label wraps (PR #1166 β thanks @mbrambilla !)
- Hid the keyboard shortcut badge on touch-only devices (PR #1325)
Search Results & Options
- Added an
excerptEllipsisoption to mark the truncated ends of excerpts (PR #1320) - Fixed phrase search across diacritic variants, so searching
"cafe latte"can match a page containingcafΓ© latte(PR #1386 β thanks @sean0407 !) - Fixed filters not matching values containing escaped characters such as quotes or backslashes (PR #1392)
- Fixed compound words being counted twice in metadata coverage, which could overvalue a metadata match (PR #1319)
- Fixed a bug which could build excerpts from the wrong words (PR #1318)
- Fixed decoding for HTML entities in the automatic
imageandimage_altmetadata (PR #1393 β thanks @digilist !)
Indexing & Performance
- More work making the index deterministic between builds (PR #1124 β thanks @gissimo !)
- Improved search performance on a bunch of broad queries (PR #1334)
- Fixed a bug where a word with many variants could produce an oversized index chunk (PR #1316)
- Searches no longer request index chunks for empty terms (PR #1317)
- More minor search performance work (PR #1238 β thanks @sanjaiyan-dev !)
Fixes & Tweaks
- Search terms that normalize to nothing are now dropped, rather than searching for an empty term (PR #1382)
- Improved some compound indexing, so
sysconfig.is_python_buildcan be found by searchingis_python_build - Fixed a way that output files could be truncated in service-mode (PR #1272 β thanks @zelinskyy !)
- Fixed
--exclude-selectorshard-erroring when a single selector could not be parsed (PR #1312 β thanks @dualfroz !) - Improved handling of percent-encoded page URLs (PR #1315, PR #1335 β thanks @dualfroz !)
- Failed index fetches are now evicted from the cache correctly and are retried (PR #1329)
- Per-page warnings are now only logged with
--verbose(PR #1314)
UI Translations
- Added Macedonian (mk) translations (PR #1353 β thanks @I90rche !)
- Added Bulgarian (bg) translations (PR #1341 β thanks @salif !)
- Improved French (fr) translations (PR #1145 β thanks @maxonss !)
- Improved German (de) translations (PR #1096 β thanks @randomguy-2650 !)
- Improved Persian (fa) translations (PR #1204 β thanks @Goudarz !)
- Improved Swahili (sw) translations (PR #1185 β thanks @gully223 !)