From cae49fcd0960393cd3f23764132c2916b329c816 Mon Sep 17 00:00:00 2001 From: Frank Date: Mon, 19 Oct 2026 13:28:24 -0700 Subject: [PATCH] docs: record the LazyVim profile and the auto-speak arming rule (Refs #36) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Neither setting did what it looked like it did, and the knowledge base had no page for either, so both were invisible until the operator asked. tools/neovim.md: the two entry points (vanilla `nvim`, `lazyvim` as an NVIM_APPNAME profile), the fresh-box install, the base16 wallpaper-palette hook with its SIGUSR1 contract, and the trap that matters — the official recipe clones over ~/.config/nvim and destroys the vanilla quick-edit path. tools/applications.md gets the editor row (Ghostty's row had lost its label) and Neovim's verified version. core/dankvoice.md gains the arming rule: arming is session-scoped, a silent session start is a config state, and the two checks — `/say status` then `pgrep -a pw-play` — prove the chain without blaming the endpoint. kb-lint 0 violations, index-coverage 0 issues. --- omp-docs/core/dankvoice.md | 13 ++++++ omp-docs/log.md | 19 +++++++++ omp-docs/tools/applications.md | 4 +- omp-docs/tools/index.md | 1 + omp-docs/tools/neovim.md | 77 ++++++++++++++++++++++++++++++++++ 5 files changed, 112 insertions(+), 2 deletions(-) create mode 100644 omp-docs/tools/neovim.md diff --git a/omp-docs/core/dankvoice.md b/omp-docs/core/dankvoice.md index 19c9496..894b4d9 100644 --- a/omp-docs/core/dankvoice.md +++ b/omp-docs/core/dankvoice.md @@ -68,6 +68,19 @@ quick local speech, the package carries cloned-voice narration. The `tts` tool / `xd://tts` device reach frank-tts too, but produce files, not audio playback. +## Arming auto-speak + +Arming is **session-scoped by design**: `/say on` arms the running session and +is deliberately never persisted. A session that starts silent is a config +state, not a fault — set `"auto": true` in `~/.omp/cache/dankvoice.json` (this +fleet does) or export `DANKVOICE_AUTO=1` to start armed. Editing the settings +file mid-session does nothing; the plugin reads it at startup. + +Two checks prove the chain, in order: `/say status` must report +`auto-speak on` with a real endpoint (not `NO ENDPOINT`), and `pgrep -a pw-play` +during a turn must show one player per spoken segment, `--target` set to the +saved sink. Thinking narration rides the same arming (`thinking: true`). + ## Limits * Auto-speak narrates thinking and the final message only — mid-turn tool diff --git a/omp-docs/log.md b/omp-docs/log.md index b13cfeb..fee0380 100644 --- a/omp-docs/log.md +++ b/omp-docs/log.md @@ -16,6 +16,25 @@ lesson, a few lines. Full incident narratives are recoverable from git (`git log --follow omp-docs/log.md`); knowledge that outlives an entry lives on its concept page, linked here. Never re-expand an entry in place. +## 2026-10-19 — dankvoice auto-speak armed at startup + +Sessions spoke only on explicit `/say`: the settings file carried no `auto` +key, and arming is session-scoped by design (`/say on` never persists). Set +`"auto": true` in `~/.omp/cache/dankvoice.json`. Law: silence at session start +is a config state — read `/say status` for `auto-speak on`, then watch +`pgrep -a pw-play` for one player per segment, before blaming the endpoint. +Details: [dankvoice](core/dankvoice.md). + +## 2026-10-19 — LazyVim installed as an NVIM_APPNAME profile + +`lazyvim` had never been installed here — shell history shows the command typed +twice and dropped; `~/.config/nvim` held only an orphaned `matugen.lua` palette +that nothing loaded. Now: LazyVim starter in `dotfiles/lazyvim/` symlinked to +`~/.config/lazyvim`, a `lazyvim` zsh function, and the palette applied through +`RRethy/base16-nvim` on `ColorScheme`. Law: the distro stays out of +`~/.config/nvim` so bare `nvim` keeps working as a vanilla quick-edit editor. +Details: [neovim](tools/neovim.md). + ## 2026-10-19 — dankvoice cut over to the `dank/dankvoice` package (Refs #34) Drop-in `agent/extensions/dankvoice.ts` and its 26-test suite retired; the diff --git a/omp-docs/tools/applications.md b/omp-docs/tools/applications.md index 4fef40b..e4c39e4 100644 --- a/omp-docs/tools/applications.md +++ b/omp-docs/tools/applications.md @@ -19,11 +19,11 @@ Applications that ship with or are configured on CachyOS with Niri on the workst | Application | Version | Purpose | |-------------|---------|---------| -| ](ghostty/index.md) | 1.3.1 | Terminal emulator | +| [Ghostty](ghostty/index.md) | 1.3.1 | Terminal emulator | | **Firefox** | 153.0 | Primary browser | | **Chromium** | 150.0 | Secondary browser | | **Nautilus** | 50.2.2 | File manager | -| **Neovim** | 0.12.4 | Text editor | +| [Neovim](neovim.md) | 0.12.6 | Text editor — vanilla `nvim` plus the `lazyvim` profile | | **Steam** | 1.0.0.86 | Gaming platform | ## System Utilities diff --git a/omp-docs/tools/index.md b/omp-docs/tools/index.md index e0833f5..b67c48d 100644 --- a/omp-docs/tools/index.md +++ b/omp-docs/tools/index.md @@ -15,6 +15,7 @@ Configuration guides and reference material for installed software. Each tool ha * [live-sync](live-sync.md) — Heartbeat daemon committing machine-written paths (memories, managed-skills, live config, dotfiles) in the command-center checkout; systemd user timer, alerts via ntfy. * [llama.cpp](llama-cpp/index.md) — Local LLM inference server supporting GGUF models with OpenAI-compatible API. * [linux-power-management](linux-power-management.md) — Sleep/wake troubleshooting, NVIDIA GPU power management, and diagnostics for Linux systems. +* [neovim](neovim.md) — Two editors in one binary: vanilla `nvim` for quick edits and the `lazyvim` NVIM_APPNAME profile, with the base16 wallpaper-palette hook and fresh-box install. * [niri](niri/index.md) — Scrollable-tiling Wayland compositor — configuration, keybindings, and architecture for the workstation. * [noctalia-shell](noctalia-shell.md) — Native desktop environment for Niri — launcher, control center, settings, lock screen, session menu, hotkey overlay, media controls, and system management. * [tmux](tmux.md) — Terminal multiplexer configuration, extended-keys setup, keyboard input best practices, and reload/restart procedures. diff --git a/omp-docs/tools/neovim.md b/omp-docs/tools/neovim.md new file mode 100644 index 0000000..743cc5f --- /dev/null +++ b/omp-docs/tools/neovim.md @@ -0,0 +1,77 @@ +--- +type: reference +title: Neovim and LazyVim +description: Two nvim entry points on the workstations — vanilla `nvim` and the `lazyvim` NVIM_APPNAME profile — plus the wallpaper palette hook and the fresh-box install procedure. +tags: + - editor + - nvim + - lazyvim + - dotfiles + - blankpad +verified: 2026-10-19 +timestamp: 2026-10-19 +--- + +# Neovim and LazyVim + +Two editors share one binary. Plain `nvim` is **vanilla** (no user config at +all — quick edits, agent-spawned edits, `git commit` buffers). The LazyVim +distribution lives in a **separate `NVIM_APPNAME` profile**, reached with the +`lazyvim` shell function. Keeping them apart is deliberate: a distro in +`~/.config/nvim` would slow down and surprise every throwaway `nvim file` call. + +| | vanilla | LazyVim | +|---|---|---| +| command | `nvim` | `lazyvim` (= `NVIM_APPNAME=lazyvim nvim`) | +| config | `~/.config/nvim` (empty) | `~/.config/lazyvim` → tracked at `dotfiles/lazyvim/` | +| plugins/state | none | `~/.local/share/lazyvim`, `~/.local/state/lazyvim`, `~/.cache/lazyvim` — runtime, **never tracked** | +| vim (not nvim) | `~/.vimrc` absent → Vim 9.2 stock defaults | — | + +The function is defined in `dotfiles/zz-blankpad/zsh/.zshrc`; `vim` and bare +`nvim` stay untouched on purpose. + +## Fresh box + +1. `git clone http://192.168.0.143:3000/dank/command-center.git ~/.omp` — the + profile arrives as `dotfiles/lazyvim/` (dotfiles tier, see + [live-sync](live-sync.md)). +2. `ln -s ~/.omp/dotfiles/lazyvim ~/.config/lazyvim` — files, not the whole + directory, are the repo convention elsewhere, but this tree is nvim-only and + the plugin manager rewrites `lazy-lock.json` in place. +3. `NVIM_APPNAME=lazyvim nvim --headless "+Lazy! sync" +qa` — bootstraps + lazy.nvim, then every plugin. Needs network (GitHub) once. +4. `:LazyHealth` inside `lazyvim` to confirm. + +Requirements met on blankpad: nvim ≥ 0.11 with LuaJIT, git, ripgrep, `fd`, +`fzf`, `lazygit`, a Nerd Font. `tree-sitter` CLI is **not** installed and is +**not** needed — nvim-treesitter downloads/compiles parsers with `cc` on the +first real session. Language servers install on demand through mason. + +## The wallpaper palette (`lua/matugen.lua`) + +LazyVim's colorscheme is overridden by a base16 palette kept in +`lua/matugen.lua`, applied through `RRethy/base16-nvim` on every `ColorScheme` +event (`lua/plugins/matugen.lua`) — so `:colorscheme ` still lands on +the palette, and `v:colors_name` keeps reporting the underlying theme, which +LazyVim's own plugin tweaks depend on. + +The module also registers a `SIGUSR1` handler that re-requires itself: a real +`matugen` install (theme generator, not installed here) writing this file from +a template can hot-retheme a live editor with `pkill -USR1 -x nvim`. Without +matugen the palette is a static snapshot — the file is the source of truth. + +To recolor by hand: edit the `base00`–`base0F` table, then send `SIGUSR1` (or +restart). Highlight groups for pickers live below the table; unlisted groups are +harmless no-ops. + +## Do not + +* Do not clone `LazyVim/starter` over `~/.config/nvim` — the official recipe, + but it destroys the vanilla quick-edit path this box relies on. +* Do not commit `~/.local/share/lazyvim` (≈200 MB of checkouts). `lazy-lock.json` + inside the profile *is* tracked: it pins plugin revisions. + +## See Also + +* [applications](applications.md) — the editor's place in the CachyOS/Niri stack. +* [tmux](tmux.md) — extended-keys setup that the same terminals need. -- 2.54.0