diff --git a/.planning/quick/11-investigate-and-fix-neovim-crash-during-/11-PLAN.md b/.planning/quick/11-investigate-and-fix-neovim-crash-during-/11-PLAN.md
new file mode 100644
index 0000000..61c21a0
--- /dev/null
+++ b/.planning/quick/11-investigate-and-fix-neovim-crash-during-/11-PLAN.md
@@ -0,0 +1,161 @@
+---
+phase: quick-11
+plan: 11
+type: execute
+wave: 1
+depends_on: []
+files_modified:
+ - main.go
+ - Makefile
+autonomous: true
+requirements: []
+must_haves:
+ truths:
+ - "Library scan no longer floods stdout with per-file debug lines at default dev log level"
+ - "Dev mode defaults to Info-level logging instead of Debug"
+ - "User can opt into Debug logging via YJ_LOG_LEVEL=debug environment variable"
+ - "make dev continues to work as before (just quieter by default)"
+ artifacts:
+ - path: "main.go"
+ provides: "Configurable slog level via YJ_LOG_LEVEL env var, defaulting to Info in dev"
+ contains: "YJ_LOG_LEVEL"
+ key_links:
+ - from: "main.go"
+ to: "slog.New"
+ via: "YJ_LOG_LEVEL env var parsing"
+ pattern: "YJ_LOG_LEVEL"
+---
+
+
+Fix neovim crash/glitch during library scan by reducing stdout log volume.
+
+Purpose: During a full library scan, the app emits 3-6+ Debug log lines per audio file to stdout
+(queueing, saving, indexing, cover art processing). For a library with thousands of files, this
+produces tens of thousands of lines flooding stdout. When neovim's overseer plugin captures the
+`make dev` process output, this overwhelms the terminal buffer, corrupting neovim's display — the
+user sees their terminal beneath a partially-rendered neovim window and has to `clear` and reopen.
+
+The root cause is that dev mode hardcodes `slog.LevelDebug` with no way to override it. The fix:
+1. Change dev mode default from Debug to Info (scan progress is already reported via Info-level
+ "beginning library scan" and "library scan complete" messages)
+2. Add YJ_LOG_LEVEL env var to allow opting into Debug when actually debugging
+3. Add a convenience `make dev-debug` target for when verbose logging is needed
+
+Output: Modified main.go with configurable log level, updated Makefile with dev-debug target.
+
+
+
+@/home/caleb/.config/opencode/get-shit-done/workflows/execute-plan.md
+@/home/caleb/.config/opencode/get-shit-done/templates/summary.md
+
+
+
+@.planning/STATE.md
+
+
+
+
+
+ Task 1: Add configurable log level via YJ_LOG_LEVEL env var
+ main.go
+
+In main.go, replace the hardcoded log level logic:
+
+Current code (lines 33-38):
+```go
+var loglevel slog.Level
+if isDev {
+ loglevel = slog.LevelDebug
+} else {
+ loglevel = slog.LevelInfo
+}
+```
+
+Replace with env-var-based log level resolution:
+```go
+loglevel := resolveLogLevel(isDev)
+```
+
+Add a `resolveLogLevel` function (in main.go, before or after `main()`):
+
+```go
+// resolveLogLevel determines the slog level. In dev mode the default
+// is Info (not Debug) to avoid flooding stdout during library scans.
+// Set YJ_LOG_LEVEL=debug to restore verbose logging.
+//
+// Accepted values: debug, info, warn, error (case-insensitive).
+// Production builds always default to Info.
+func resolveLogLevel(isDev bool) slog.Level {
+ if env := os.Getenv("YJ_LOG_LEVEL"); env != "" {
+ switch strings.ToLower(env) {
+ case "debug":
+ return slog.LevelDebug
+ case "info":
+ return slog.LevelInfo
+ case "warn":
+ return slog.LevelWarn
+ case "error":
+ return slog.LevelError
+ }
+ }
+
+ // Default: Info for both dev and prod.
+ return slog.LevelInfo
+}
+```
+
+Add `"strings"` to the import block if not already present.
+
+This changes dev default from Debug to Info. The ~14 Debug log lines per audio file during scan
+will no longer appear, dramatically reducing stdout volume. Info-level messages like
+"beginning library scan", "library scan complete", and "library data cleared successfully"
+still appear so the user knows what's happening.
+
+ go build -tags webkit2_41 ./... compiles without errors
+
+ - Dev mode defaults to Info-level logging (not Debug)
+ - YJ_LOG_LEVEL=debug restores verbose logging
+ - YJ_LOG_LEVEL accepts debug/info/warn/error (case-insensitive)
+ - No debug log flood during library scan at default level
+
+
+
+
+ Task 2: Add make dev-debug convenience target
+ Makefile
+
+Add a `dev-debug` target after the existing `dev` target in Makefile:
+
+```makefile
+dev-debug: setup generate clean
+ WEBKIT_DISABLE_DMABUF_RENDERER=1 YJ_LOG_LEVEL=debug go tool wails dev -tags webkit2_41 -loglevel Debug -v 2
+```
+
+This gives a one-command way to get the old verbose behavior when actually debugging.
+The existing `dev` target stays unchanged (it now runs quieter because the Go app defaults to Info).
+
+ make -n dev-debug shows the correct command with YJ_LOG_LEVEL=debug
+
+ - `make dev-debug` target exists and sets YJ_LOG_LEVEL=debug
+ - `make dev` continues to work unchanged (but quieter due to Task 1)
+
+
+
+
+
+
+- `go build -tags webkit2_41 ./...` compiles cleanly
+- `make -n dev` shows normal command (no YJ_LOG_LEVEL)
+- `make -n dev-debug` shows command with YJ_LOG_LEVEL=debug
+- Grep main.go for `resolveLogLevel` function and `YJ_LOG_LEVEL` usage
+
+
+
+- Dev mode no longer floods stdout with Debug-level per-file scan logs
+- User can opt into Debug logging via YJ_LOG_LEVEL=debug or `make dev-debug`
+- No behavioral changes to the application itself (only log verbosity)
+
+
+