···42424343 // Regex to match operators: name:value, desc:value, description:value, kw:value, keyword:value
4444 // Value continues until whitespace or next operator
4545- const operatorRegex = /\b(name|desc|description|kw|keyword):([^\s]+)/gi
4545+ const operatorRegex = /\b(name|desc|description|kw|keyword):(\S+)/gi
46464747 let remaining = input
4848 let match
+1-1
app/pages/search.vue
···303303 // Must start with alphanumeric
304304 if (!/^[a-z0-9]/i.test(name)) return false
305305 // Can contain alphanumeric, hyphen, underscore
306306- return /^[a-z0-9_-]+$/i.test(name)
306306+ return /^[\w-]+$/.test(name)
307307}
308308309309/** Validated user/org suggestion */
···7676 defaultColor: 'dark',
7777 })
7878 // Remove inline style from <pre> tag so CSS can control appearance
7979- html = html.replace(/<pre([^>]*)\s+style="[^"]*"/, '<pre$1')
7979+ html = html.replace(/<pre([^>]*) style="[^"]*"/, '<pre$1')
8080 // Shiki doesn't encode > in text content (e.g., arrow functions =>)
8181 // We need to encode them for HTML validation
8282 return escapeRawGt(html)
+1-1
shared/schemas/package.ts
···2222export const VersionSchema = v.pipe(
2323 v.string(),
2424 v.nonEmpty('Version is required'),
2525- v.regex(/^[a-z0-9._+-]+$/i, 'Invalid version format'),
2525+ v.regex(/^[\w.+-]+$/, 'Invalid version format'),
2626)
27272828/**
+1-1
shared/utils/git-providers.ts
···299299 const normalized = raw.replace(/^git\+/, '')
300300301301 // Handle ssh:// and git:// URLs by converting to https://
302302- if (/^(ssh|git):\/\//i.test(normalized)) {
302302+ if (/^(?:ssh|git):\/\//i.test(normalized)) {
303303 try {
304304 const url = new URL(normalized)
305305 const path = url.pathname.replace(/^\/*/, '')