mirivlad
|
88eb99e9af
|
fix: verstak:// links in preview, case-insensitive search, keyboard layout swap
1. Fix verstak:// links rendered as blocked/strikethrough in markdown preview:
- Changed href from 'javascript:void(0)' to hash-based '#verstak-type-id'
- DOMPurify no longer strips the link; click handler uses data-verstak-href
- CSS already handles .md-link--internal with cyan color, no strikethrough
2. Add markdown label escaping for internal link picker:
- New escapeMarkdownLabel() in markdown.ts escapes [ ] ( )
- Applied in InternalLinkPicker.selectResult() before inserting markdown
3. Fix case-insensitive search for RU/EN:
- Add title_lower column (migration 019) populated by Go strings.ToLower
- BackfillTitleLower() runs after migrations to populate existing rows
- Search() now queries title_lower with Go-level lowercase (Unicode-aware)
- insertNode() and UpdateTitle() populate title_lower automatically
- New migration 019 + BackfillTitleLower in storage.go
- Tests: TestSearchCaseInsensitive, TestSearchFindsCreatedNode
4. Add keyboard layout swap search support:
- New keyboardLayout.ts utility with RU↔EN QWERTY mapping
- expandKeyboardVariants() generates original + swapped + lowercased variants
- InternalLinkPicker.search() queries all variants in parallel, deduplicates by ID
- Examples: dthcnfr → верстак, руддщ → hello
Files changed:
- markdown.ts: hash href + escapeMarkdownLabel export
- InternalLinkPicker.svelte: label escaping + layout swap search
- keyboardLayout.ts: new RU/EN layout swap utility
- repository.go: title_lower in Search/insertNode/UpdateTitle
- storage.go: migration019 + BackfillTitleLower
- migrations_019.sql.go: new migration
- search_test.go, repository_test.go: new tests
|
2026-06-15 10:39:44 +08:00 |