From 5e6a3ecd282f51be0ec4b33d1de928bad510ad88 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Sun, 4 Jan 2026 00:45:32 +0000 Subject: [PATCH 1/5] Initial plan From e3ae5c42568b3de9e3fefa245b77213994dcc29a Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Sun, 4 Jan 2026 00:51:14 +0000 Subject: [PATCH 2/5] Add fuzzy/exact search toggle to VPLocalSearchBox Co-authored-by: eli32-vlc <84105075+eli32-vlc@users.noreply.github.com> --- docs/.vitepress/constants.ts | 2 +- .../theme/components/VPLocalSearchBox.vue | 923 ++++++++++++++++++ 2 files changed, 924 insertions(+), 1 deletion(-) create mode 100644 docs/.vitepress/theme/components/VPLocalSearchBox.vue diff --git a/docs/.vitepress/constants.ts b/docs/.vitepress/constants.ts index fb22ca7fb..108d4359d 100644 --- a/docs/.vitepress/constants.ts +++ b/docs/.vitepress/constants.ts @@ -121,7 +121,7 @@ export const search: DefaultTheme.Config['search'] = { }, searchOptions: { combineWith: 'AND', - fuzzy: true, + fuzzy: false, // @ts-ignore boostDocument: (documentId, term, storedFields: Record) => { const titles = (storedFields?.titles as string[]) diff --git a/docs/.vitepress/theme/components/VPLocalSearchBox.vue b/docs/.vitepress/theme/components/VPLocalSearchBox.vue new file mode 100644 index 000000000..a8c2540dd --- /dev/null +++ b/docs/.vitepress/theme/components/VPLocalSearchBox.vue @@ -0,0 +1,923 @@ + + + + + From 443d34d1699409722ff507c27c38f0ff2a90ef76 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Sun, 4 Jan 2026 00:58:24 +0000 Subject: [PATCH 3/5] Complete fuzzy/exact search toggle implementation with screenshots Co-authored-by: eli32-vlc <84105075+eli32-vlc@users.noreply.github.com> --- docs/.vitepress/config.mts | 6 ++ .../theme/components/VPLocalSearchBox.vue | 12 ++-- package.json | 2 + pnpm-lock.yaml | 57 +++++++++++++++++++ 4 files changed, 71 insertions(+), 6 deletions(-) diff --git a/docs/.vitepress/config.mts b/docs/.vitepress/config.mts index 8b73fb0be..04326b833 100644 --- a/docs/.vitepress/config.mts +++ b/docs/.vitepress/config.mts @@ -98,6 +98,12 @@ export default defineConfig({ replacement: fileURLToPath( new URL('./theme/components/ThemeDropdown.vue', import.meta.url) ) + }, + { + find: /^.*VPLocalSearchBox\.vue$/, + replacement: fileURLToPath( + new URL('./theme/components/VPLocalSearchBox.vue', import.meta.url) + ) } ] }, diff --git a/docs/.vitepress/theme/components/VPLocalSearchBox.vue b/docs/.vitepress/theme/components/VPLocalSearchBox.vue index a8c2540dd..94ec1709b 100644 --- a/docs/.vitepress/theme/components/VPLocalSearchBox.vue +++ b/docs/.vitepress/theme/components/VPLocalSearchBox.vue @@ -26,12 +26,12 @@ import { watchEffect, type Ref } from 'vue' -import type { ModalTranslations } from '../../../../types/local-search' -import { pathToFile } from '../../app/utils' -import { escapeRegExp } from '../../shared' -import { useData } from '../composables/data' -import { LRUCache } from '../support/lru' -import { createSearchTranslate } from '../support/translation' +import type { ModalTranslations } from 'vitepress/types/local-search' +import { pathToFile } from 'vitepress/dist/client/app/utils' +import { escapeRegExp } from 'vitepress/dist/client/shared' +import { useData } from 'vitepress/dist/client/theme-default/composables/data' +import { LRUCache } from 'vitepress/dist/client/theme-default/support/lru' +import { createSearchTranslate } from 'vitepress/dist/client/theme-default/support/translation' const emit = defineEmits<{ (e: 'close'): void diff --git a/package.json b/package.json index eb8e4f4fc..aba659ff3 100644 --- a/package.json +++ b/package.json @@ -25,9 +25,11 @@ "@headlessui/vue": "^1.7.23", "@resvg/resvg-js": "^2.6.2", "@vueuse/core": "^14.1.0", + "@vueuse/integrations": "^14.1.0", "consola": "^3.4.2", "feed": "^5.1.0", "itty-fetcher": "^1.0.10", + "mark.js": "^8.11.1", "nitro-cors": "^0.7.1", "nitropack": "^2.12.9", "nprogress": "^0.2.0", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 6d479c575..fde964f58 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -23,6 +23,9 @@ importers: '@vueuse/core': specifier: ^14.1.0 version: 14.1.0(vue@3.5.25(typescript@5.9.3)) + '@vueuse/integrations': + specifier: ^14.1.0 + version: 14.1.0(focus-trap@7.6.6)(nprogress@0.2.0)(vue@3.5.25(typescript@5.9.3)) consola: specifier: ^3.4.2 version: 3.4.2 @@ -32,6 +35,9 @@ importers: itty-fetcher: specifier: ^1.0.10 version: 1.0.10 + mark.js: + specifier: ^8.11.1 + version: 8.11.1 nitro-cors: specifier: ^0.7.1 version: 0.7.1 @@ -2222,6 +2228,48 @@ packages: universal-cookie: optional: true + '@vueuse/integrations@14.1.0': + resolution: {integrity: sha512-eNQPdisnO9SvdydTIXnTE7c29yOsJBD/xkwEyQLdhDC/LKbqrFpXHb3uS//7NcIrQO3fWVuvMGp8dbK6mNEMCA==} + peerDependencies: + async-validator: ^4 + axios: ^1 + change-case: ^5 + drauu: ^0.4 + focus-trap: ^7 + fuse.js: ^7 + idb-keyval: ^6 + jwt-decode: ^4 + nprogress: ^0.2 + qrcode: ^1.5 + sortablejs: ^1 + universal-cookie: ^7 || ^8 + vue: ^3.5.0 + peerDependenciesMeta: + async-validator: + optional: true + axios: + optional: true + change-case: + optional: true + drauu: + optional: true + focus-trap: + optional: true + fuse.js: + optional: true + idb-keyval: + optional: true + jwt-decode: + optional: true + nprogress: + optional: true + qrcode: + optional: true + sortablejs: + optional: true + universal-cookie: + optional: true + '@vueuse/metadata@12.8.2': resolution: {integrity: sha512-rAyLGEuoBJ/Il5AmFHiziCPdQzRt88VxR+Y/A/QhJ1EWtWqPBBAxTAFaSkviwEuOEZNtW8pvkPgoCZQ+HxqW1A==} @@ -6851,6 +6899,15 @@ snapshots: transitivePeerDependencies: - typescript + '@vueuse/integrations@14.1.0(focus-trap@7.6.6)(nprogress@0.2.0)(vue@3.5.25(typescript@5.9.3))': + dependencies: + '@vueuse/core': 14.1.0(vue@3.5.25(typescript@5.9.3)) + '@vueuse/shared': 14.1.0(vue@3.5.25(typescript@5.9.3)) + vue: 3.5.25(typescript@5.9.3) + optionalDependencies: + focus-trap: 7.6.6 + nprogress: 0.2.0 + '@vueuse/metadata@12.8.2': {} '@vueuse/metadata@14.1.0': {} From 28f9e95a76c22680f6a0d6da643f4ddc22a3b3ef Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Sun, 4 Jan 2026 02:23:16 +0000 Subject: [PATCH 4/5] Add minisearch dependency and update screenshots with actual interface Co-authored-by: eli32-vlc <84105075+eli32-vlc@users.noreply.github.com> --- package.json | 1 + pnpm-lock.yaml | 3 +++ unocss.config.ts | 11 ++++++----- 3 files changed, 10 insertions(+), 5 deletions(-) diff --git a/package.json b/package.json index aba659ff3..43cad16ef 100644 --- a/package.json +++ b/package.json @@ -30,6 +30,7 @@ "feed": "^5.1.0", "itty-fetcher": "^1.0.10", "mark.js": "^8.11.1", + "minisearch": "^7.2.0", "nitro-cors": "^0.7.1", "nitropack": "^2.12.9", "nprogress": "^0.2.0", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index fde964f58..868915f9c 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -38,6 +38,9 @@ importers: mark.js: specifier: ^8.11.1 version: 8.11.1 + minisearch: + specifier: ^7.2.0 + version: 7.2.0 nitro-cors: specifier: ^0.7.1 version: 0.7.1 diff --git a/unocss.config.ts b/unocss.config.ts index 001b1f731..5ea213a49 100644 --- a/unocss.config.ts +++ b/unocss.config.ts @@ -129,12 +129,13 @@ export default defineConfig({ ) } } - }), - presetWebFonts({ - fonts: { - mono: 'Geist Mono' - } }) + // Temporarily disabled for build in sandboxed environment + // presetWebFonts({ + // fonts: { + // mono: 'Geist Mono' + // } + // }) ], transformers: [transformerDirectives()] }) \ No newline at end of file From 9697af1f89a4476dde157a018301d7d612bc0f76 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Sun, 4 Jan 2026 02:29:02 +0000 Subject: [PATCH 5/5] Remove temporary comment and restore web fonts preset Co-authored-by: eli32-vlc <84105075+eli32-vlc@users.noreply.github.com> --- unocss.config.ts | 11 +++++------ 1 file changed, 5 insertions(+), 6 deletions(-) diff --git a/unocss.config.ts b/unocss.config.ts index 5ea213a49..001b1f731 100644 --- a/unocss.config.ts +++ b/unocss.config.ts @@ -129,13 +129,12 @@ export default defineConfig({ ) } } + }), + presetWebFonts({ + fonts: { + mono: 'Geist Mono' + } }) - // Temporarily disabled for build in sandboxed environment - // presetWebFonts({ - // fonts: { - // mono: 'Geist Mono' - // } - // }) ], transformers: [transformerDirectives()] }) \ No newline at end of file