feat: miller column browser, offline cache, search, breadcrumbs
- Dynamic miller column sizing with flexbox layout - Root column (160px), middle slices (48px), active column (flex) - Auto-scroll browser to rightmost column on navigation - Offline indicator UI and IndexedDB cache integration - /api/documents endpoint for client-side document caching - Breadcrumb navigation in document content area - FTS5 search with SQLite virtual table - Client-side Mermaid and KaTeX rendering via CDN - Deep sample content (advanced-topics/raft-deep-dive) - Border removal (only search button keeps radius) - Full viewport layout with proper borders between sidebar/content
This commit is contained in:
@@ -0,0 +1 @@
|
||||
DROP TABLE IF EXISTS document_search;
|
||||
29
apps/server/internal/database/migrations/000007_fts5.up.sql
Normal file
29
apps/server/internal/database/migrations/000007_fts5.up.sql
Normal file
@@ -0,0 +1,29 @@
|
||||
CREATE VIRTUAL TABLE IF NOT EXISTS document_search USING fts5(
|
||||
title,
|
||||
content,
|
||||
path UNINDEXED,
|
||||
tokenize='porter'
|
||||
);
|
||||
|
||||
INSERT INTO document_search (rowid, title, content, path)
|
||||
SELECT rowid, title, '', path FROM documents;
|
||||
|
||||
CREATE TRIGGER IF NOT EXISTS document_search_insert
|
||||
AFTER INSERT ON documents
|
||||
BEGIN
|
||||
INSERT INTO document_search (rowid, title, content, path)
|
||||
VALUES (NEW.rowid, NEW.title, '', NEW.path);
|
||||
END;
|
||||
|
||||
CREATE TRIGGER IF NOT EXISTS document_search_update
|
||||
AFTER UPDATE ON documents
|
||||
BEGIN
|
||||
UPDATE document_search SET title = NEW.title, path = NEW.path
|
||||
WHERE rowid = NEW.rowid;
|
||||
END;
|
||||
|
||||
CREATE TRIGGER IF NOT EXISTS document_search_delete
|
||||
AFTER DELETE ON documents
|
||||
BEGIN
|
||||
DELETE FROM document_search WHERE rowid = OLD.rowid;
|
||||
END;
|
||||
Reference in New Issue
Block a user