Luca Rossi 2fe473ebbd feat: full-text search with qmd backend and SearchPanel UI (Cmd+Shift+F) (#64)
* feat: add search backend (qmd CLI) and design file

- Add search.rs: qmd integration for keyword (BM25), semantic (vsearch),
  and hybrid search modes via CLI JSON output
- Register search_vault Tauri command in lib.rs
- Design file with 3 frames: empty, results, no-results states
- Fix pre-existing test failures: install @tauri-apps/plugin-opener,
  add mock in test setup

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

* feat: add SearchPanel UI with Cmd+Shift+F shortcut

- SearchPanel component: full-text search overlay with keyword/semantic
  mode toggle, debounced search (200ms), arrow key navigation, result
  count + elapsed time display, note type badges from vault entries
- Cmd+Shift+F shortcut registered in useAppKeyboard
- Mock search_vault handler in mock-tauri for browser dev mode
- SearchResult/SearchResponse types in types.ts
- Tests: 15 new tests for SearchPanel + 2 for keyboard shortcut
- scrollIntoView mock in test setup for jsdom compatibility

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

* fix: correct SearchPanel imports for Tauri/browser dual-mode

Use invoke from @tauri-apps/api/core and mockInvoke from mock-tauri
with a searchCall wrapper, fixing the TypeScript build error.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

* fix: make test_detect_collection_fallback robust when qmd not installed

* fix: reset localStorage between App tests to prevent view mode state leak

---------

Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-25 16:09:50 +00:00
2026-02-16 14:26:36 +01:00
2026-02-16 16:56:44 +01:00
2026-02-16 16:56:44 +01:00

Laputa App

Personal knowledge and life management desktop app built with Tauri v2 + React + TypeScript + BlockNote.

Documentation

Quick Start

Prerequisites

  • Node.js 20+
  • pnpm 8+
  • Rust (latest stable)
  • macOS (for development)

Setup

# Install dependencies
pnpm install

# Install git hooks (optional but recommended)
.github/hooks/install-hooks.sh

# Run dev server
pnpm dev

# Open in browser (mock mode)
open http://localhost:5173

# Or run in Tauri
pnpm tauri dev

Testing

# Frontend tests
pnpm test

# Backend tests
cargo test

# Coverage
pnpm test:coverage

# E2E tests
pnpm test:e2e

Code Quality

# Lint
pnpm lint

# Rust checks
cargo clippy
cargo fmt --check

# CodeScene (via Claude Code)
claude 'Check code health with CodeScene MCP'

Development Workflow

See CLAUDE.md for coding guidelines and workflow.

Key principles:

  • Small, atomic commits
  • Test as you go
  • Visual verification mandatory
  • Documentation updated with code changes

CI/CD

GitHub Actions runs on every push/PR:

  • Tests (frontend + Rust)
  • 📊 Coverage (70% threshold)
  • 🎨 Lint & format
  • ⚠️ Documentation check

See .github/SETUP.md for CI/CD configuration.

Git Hooks

Pre-commit hook checks code health before every commit. See .github/HOOKS.md for details.

License

Private repository — not licensed for public use.

Description
Desktop app to manage markdown knowledge bases
Readme AGPL-3.0 107 MiB
Languages
TypeScript 70.4%
JavaScript 13.7%
Rust 13.7%
Python 1%
CSS 0.6%
Other 0.5%