diff --git a/.opencode/ops/cargo-audit-fix-plan.md b/.opencode/ops/cargo-audit-fix-plan.md
index 00ab907..b68c39e 100644
--- a/.opencode/ops/cargo-audit-fix-plan.md
+++ b/.opencode/ops/cargo-audit-fix-plan.md
@@ -30,6 +30,7 @@ Each phase lives on a sub-branch off `fix/204-cargo-audit-advisories` to isolate
## Test Plan
After each phase:
+
- `cargo build --workspace`
- `cargo test --workspace`
- `cargo clippy --workspace -- -D warnings`
diff --git a/README.md b/README.md
index 776d0f0..0e49d05 100644
--- a/README.md
+++ b/README.md
@@ -292,7 +292,7 @@ RUST_LOG=debug
| Technology | Purpose |
| ---------------------------------------------- | ------------------------------------------------------ |
-| [Vitest](https://vitest.dev/) | Frontend unit tests (1488 tests) |
+| [Vitest](https://vitest.dev/) | Frontend unit tests (1488 tests) |
| [cargo test](https://doc.rust-lang.org/cargo/) | Rust integration tests against Docker MySQL (45 tests) |
| [Docker](https://www.docker.com/) | MySQL 8, MySQL 5.7, MariaDB 11 test containers |
@@ -316,7 +316,6 @@ sqlpilot/
│ │ ├── history/ # QueryHistory
│ │ ├── import/ # ImportDialog (CSV + SQL modes)
│ │ ├── layout/ # AppLayout, Sidebar, MainPanel, Toolbar, StatusBar
-│ │ ├── querybuilder/ # QueryBuilder (visual SQL builder)
│ │ ├── routine/ # RoutineViewer (procedure/function executor)
│ │ └── schema/ # TableStructure (columns, indexes, DDL)
│ ├── hooks/ # 7 custom hooks (context menu, keyboard, theme, schema cache, grid editing, query execution, click handler)
diff --git a/lefthook.yml b/lefthook.yml
index 7f1e735..1c0a27e 100644
--- a/lefthook.yml
+++ b/lefthook.yml
@@ -3,6 +3,12 @@ pre-commit:
unit-tests:
glob: "*.{ts,tsx,rs}"
run: npm run test:unit -- --reporter=dot
+ lint:
+ glob: "*.{ts,tsx,js,jsx}"
+ run: npm run lint
+ type-check:
+ glob: "*.{ts,tsx}"
+ run: npm run type-check
dprint:
glob: "*.{ts,tsx,js,jsx,json,yml,yaml,md,toml}"
run: npx dprint check --list-different
@@ -10,6 +16,10 @@ pre-commit:
root: "src-tauri/"
glob: "*.rs"
run: cargo fmt --check
+ cargo-clippy:
+ root: "src-tauri/"
+ glob: "*.rs"
+ run: cargo clippy --all-targets --all-features -- -D warnings
lockfile-check:
glob: "package.json"
run: |
diff --git a/src-tauri/src/menu.rs b/src-tauri/src/menu.rs
index 2d1b996..6d0f9f8 100644
--- a/src-tauri/src/menu.rs
+++ b/src-tauri/src/menu.rs
@@ -72,14 +72,6 @@ pub fn build_menu(app: &tauri::AppHandle) -> tauri::Result