@gmickel/gno 0.33.2 → 0.33.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/bunfig.toml CHANGED
@@ -1,2 +1,5 @@
1
1
  [serve.static]
2
2
  plugins = ["bun-plugin-tailwind"]
3
+
4
+ [test]
5
+ preload = ["./test/preload/happy-dom.ts"]
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@gmickel/gno",
3
- "version": "0.33.2",
3
+ "version": "0.33.4",
4
4
  "description": "Local semantic search for your documents. Index Markdown, PDF, and Office files with hybrid BM25 + vector search.",
5
5
  "keywords": [
6
6
  "embeddings",
@@ -57,6 +57,9 @@
57
57
  "lint:check": "oxlint --type-aware --type-check && oxfmt --check .",
58
58
  "typecheck": "bunx tsc --noEmit",
59
59
  "test": "bun test",
60
+ "test:web": "bun test test/serve/public --timeout 30000",
61
+ "test:e2e": "bun scripts/web-ui-smoke.ts",
62
+ "test:e2e:install": "bunx playwright install chromium",
60
63
  "test:watch": "bun test --watch",
61
64
  "test:coverage": "bun test --coverage",
62
65
  "test:coverage:html": "bun test --coverage --html",
@@ -168,6 +171,8 @@
168
171
  "@ai-sdk/openai": "^3.0.2",
169
172
  "@biomejs/biome": "2.3.14",
170
173
  "@tailwindcss/cli": "^4.1.18",
174
+ "@testing-library/react": "^16.3.2",
175
+ "@testing-library/user-event": "^14.6.1",
171
176
  "@types/bun": "latest",
172
177
  "@types/react": "^19.2.13",
173
178
  "@types/react-dom": "^19.2.3",
@@ -176,6 +181,7 @@
176
181
  "docx": "^9.5.1",
177
182
  "evalite": "^1.0.0-beta.15",
178
183
  "exceljs": "^4.4.0",
184
+ "happy-dom": "^20.8.9",
179
185
  "lefthook": "^2.1.0",
180
186
  "oxfmt": "^0.28.0",
181
187
  "oxlint": "^1.42.0",
@@ -78,8 +78,9 @@ export function parseFrontmatter(content: string): ParsedFrontmatter {
78
78
  // Parse new key: value
79
79
  const match = line.match(/^([^:]+):\s*(.*)$/);
80
80
  if (match) {
81
- currentKey = match[1].trim();
82
- let value: unknown = match[2].trim();
81
+ const [, rawKey = "", rawValue = ""] = match;
82
+ currentKey = rawKey.trim();
83
+ let value: unknown = rawValue.trim();
83
84
 
84
85
  // Remove surrounding quotes
85
86
  if (
@@ -203,6 +203,9 @@ function parseBreadcrumbs(
203
203
 
204
204
  for (let i = 0; i < parts.length; i++) {
205
205
  const part = parts[i];
206
+ if (!part) {
207
+ continue;
208
+ }
206
209
  currentPath = currentPath ? `${currentPath}/${part}` : part;
207
210
 
208
211
  // Last segment is the file - no link
@@ -286,7 +286,7 @@ export default function Search({ navigate }: PageProps) {
286
286
  if (!hybridAvailable) return "fast";
287
287
  const currentIdx = THOROUGHNESS_ORDER.indexOf(current);
288
288
  const nextIdx = (currentIdx + 1) % THOROUGHNESS_ORDER.length;
289
- return THOROUGHNESS_ORDER[nextIdx];
289
+ return THOROUGHNESS_ORDER[nextIdx] ?? "fast";
290
290
  });
291
291
  }, [hybridAvailable]);
292
292