verstak/internal/core/storage
mirivlad 700e4dae5b fix: global search case-insensitive + keyboard layout swap
Unified search normalization across InternalLinkPicker and GlobalSearch:

1. GlobalSearch.svelte: multi-variant search (same as InternalLinkPicker)
   - expandKeyboardVariants() for RU/EN layout swap
   - Parallel Search queries with dedup by type+nodeId+targetId+title
   - 180ms debounce preserved

2. Backend: fix LOWER() in SQL for links/actions
   - Replace LOWER(column) LIKE with lowercased columns (title_lower, url_lower, etc.)
   - Migration 020: add lowercased columns + indexes for links and actions
   - BackfillLinksLower() + BackfillActionsLower() in storage.go
   - Update INSERT in bindings_links.go and action.go to populate lowercased columns

3. FTS5 search: Unicode case-insensitive
   - Index lowercased title/content/tags in search_index
   - sanitizeFTS() now lowercases query before MATCH
   - RebuildFTS() called after migrations

4. Case-insensitive search for nodes (already done in previous commit, verified):
   - title_lower column with Go strings.ToLower
   - Search() queries title_lower with lowercased query

All test suites PASS, full build OK.
2026-06-15 10:52:34 +08:00
..
migrations.go step 2: init command + SQLite storage + migrations + config 2026-05-30 18:58:47 +08:00
migrations_002.sql.go steps 4-6 + doc overhaul: files, notes, GUI, plugins docs 2026-05-30 20:35:04 +08:00
migrations_003.sql.go steps 4-6 + doc overhaul: files, notes, GUI, plugins docs 2026-05-30 20:35:04 +08:00
migrations_004.sql.go feat: node section assignment for sidebar filtering + search fix 2026-05-31 01:26:46 +08:00
migrations_005.sql.go step 7: actions — table, service, CLI, GUI tab + confirm dialog 2026-05-31 01:52:23 +08:00
migrations_006.sql.go steps 8+9: worklog + FTS5 search 2026-05-31 02:25:25 +08:00
migrations_007.sql.go steps 8+9: worklog + FTS5 search 2026-05-31 02:25:25 +08:00
migrations_008.sql.go today dashboard: activity_events, ListTodayView with events timeline, frontend TodayDashboard separated from sidebar 2026-06-01 02:16:13 +08:00
migrations_009.sql.go activity: global feed, per-case log, sidebar section, today UX 2026-06-01 02:53:56 +08:00
migrations_010.sql.go feat: sync — migration 010 for sync_ops and sync_state tables 2026-06-01 22:45:12 +08:00
migrations_011.sql.go sync: overhaul sync system — device pairing, server_sequence, auto-sync, dashboards 2026-06-02 02:26:05 +08:00
migrations_012.sql.go refactor: implement template-driven node tree and human-readable vault layout 2026-06-02 12:47:06 +08:00
migrations_013.sql.go feat: journal UX overhaul — picker, export dialog, events, readability 2026-06-03 11:24:59 +08:00
migrations_014.sql.go feat: worklog source field, suggestion logic fix, modal form, activity navigation 2026-06-03 12:27:50 +08:00
migrations_015.sql.go feat: resolve inbox links separately 2026-06-05 07:33:10 +08:00
migrations_016.sql.go feat: aggregate journals across node subtrees 2026-06-05 12:37:25 +08:00
migrations_017.sql.go feat: ШАГ 1 — Bridge HTTP-сервер для браузерного расширения 2026-06-06 18:23:47 +08:00
migrations_018.sql.go feat: ШАГ 2 — Staging-таблица browser_events + Store 2026-06-06 18:27:00 +08:00
migrations_019.sql.go fix: verstak:// links in preview, case-insensitive search, keyboard layout swap 2026-06-15 10:39:44 +08:00
migrations_020.sql.go fix: global search case-insensitive + keyboard layout swap 2026-06-15 10:52:34 +08:00
storage.go fix: global search case-insensitive + keyboard layout swap 2026-06-15 10:52:34 +08:00