Fuzzy-search implementation for web import#833
Conversation
WalkthroughThe pull request introduces fuzzy search functionality to the Valkyrie IDE plugin. A new library dependency 🚥 Pre-merge checks | ✅ 2 | ❌ 1❌ Failed checks (1 warning)
✅ Passed checks (2 passed)
✏️ Tip: You can configure your own custom pre-merge checks in the settings. ✨ Finishing touches
🧪 Generate unit tests (beta)
Important Action Needed: IP Allowlist UpdateIf your organization protects your Git platform with IP whitelisting, please add the new CodeRabbit IP address to your allowlist:
Reviews will stop working after February 8, 2026 if the new IP is not added to your allowlist. Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
There was a problem hiding this comment.
Actionable comments posted: 1
🤖 Fix all issues with AI agents
In `@tools/idea-plugin/build.gradle.kts`:
- Line 76: The build fails to resolve the fuzzysearch dependency because the
module-level repositories block in tools/idea-plugin/build.gradle.kts only
points to the local m2 repo and overrides root repositories; update the
repositories block that contains implementation(libs.fuzzysearch) to include
JitPack by adding maven(url = "https://jitpack.io") so artifacts with groupId
com.github.* (e.g., com.github.android-password-store:sublime-fuzzy:2.3.4) can
be resolved.
🧹 Nitpick comments (1)
tools/idea-plugin/src/main/kotlin/io/github/composegears/valkyrie/ui/screen/webimport/material/MaterialSymbolsViewModel.kt (1)
10-10: ConfirmfuzzyMatchsemantics and consider input normalization.Please verify
Fuzzy.fuzzyMatchexpects(pattern, target)and that a higher score means a better match before sorting descending. If matching is case-sensitive, normalizing query/target helps preserve the “forgiving” search UX.Possible normalization tweak (optional)
} else { + val query = searchQuery.trim().lowercase() categoryFiltered .asSequence() .flatMap { it.value } - .map { it to Fuzzy.fuzzyMatch(searchQuery, it.name) } + .map { icon -> icon to Fuzzy.fuzzyMatch(query, icon.name.lowercase()) } .filter { it.second.first } .sortedByDescending { it.second.second } .map { IconItem(it.first, it.first.originalName) } .toList() }Also applies to: 173-179
Implements fuzzy-serach, allowing some mistake, key letter search
Screen.Recording.2026-02-04.at.16.25.47.mov