Compare commits
5
Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
fd6a07bb58 | ||
|
|
1921d76319 | ||
|
|
d302151a8d | ||
|
|
5b6f4381b0 | ||
|
|
cae49fcd09 |
No files matched your search
@@ -68,18 +68,37 @@ quick local speech, the package carries cloned-voice narration. The `tts`
|
|||||||
tool / `xd://tts` device reach frank-tts too, but produce files, not audio
|
tool / `xd://tts` device reach frank-tts too, but produce files, not audio
|
||||||
playback.
|
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
|
## Limits
|
||||||
|
|
||||||
* Auto-speak narrates thinking and the final message only — mid-turn tool
|
* Auto-speak narrates **each turn** — the assistant's prose and thinking while
|
||||||
chatter is never spoken; skipped in `print`/`json` modes so benches stay
|
the agent is still working — plus the settled final answer, spoken once. A
|
||||||
silent.
|
turn that lands while audio is still playing is dropped, not queued or
|
||||||
|
interrupting; tool-only turns stay silent; `print`/`json` modes never speak,
|
||||||
|
so benches stay quiet. Narration goes through the humanizer, so it lags its
|
||||||
|
turn by a rewrite round trip; `/say humanize off` removes the lag.
|
||||||
|
* Arming is read at startup only — see **Arming auto-speak** above. A session
|
||||||
|
that never speaks is unarmed, not broken; `/say on` before debugging.
|
||||||
* frank-tts deployment, voice packs and the registry are owned by the
|
* frank-tts deployment, voice packs and the registry are owned by the
|
||||||
`serverAppConfigs` repo (`serverAppConfigs-docs/Dankclaw/Frank TTS.md`).
|
`serverAppConfigs` repo (`serverAppConfigs-docs/Dankclaw/Frank TTS.md`).
|
||||||
|
|
||||||
## Citations
|
## Citations
|
||||||
|
|
||||||
* Package repo `dank/dankvoice` (README, `docs/decisions/`) — behaviour and
|
* Package repo `dank/dankvoice` (README, `docs/decisions/`) — behaviour and
|
||||||
knob truth.
|
knob truth. `docs/decisions/2026-10-19-turn-narration.md` records why
|
||||||
|
narration rides `turn_end` and not only `agent_end`.
|
||||||
* Gitea issues #21, #23, #27, #32 (drop-in history) and #34 (this cutover)
|
* Gitea issues #21, #23, #27, #32 (drop-in history) and #34 (this cutover)
|
||||||
on `dank/command-center`.
|
on `dank/command-center`.
|
||||||
* Live endpoint probes 2026-10-18/19 documented in those issues.
|
* Live endpoint probes 2026-10-18/19 documented in those issues.
|
||||||
|
|||||||
@@ -16,6 +16,31 @@ lesson, a few lines. Full incident narratives are recoverable from git
|
|||||||
(`git log --follow omp-docs/log.md`); knowledge that outlives an entry lives
|
(`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.
|
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`. Same report, second half:
|
||||||
|
auto-speak listened only to `agent_end` — a settle that fires once per prompt
|
||||||
|
and is skipped outright when the harness schedules a continuation — so nothing
|
||||||
|
was narrated while an agent worked; fixed in dank/dankvoice#3, which narrates
|
||||||
|
`turn_end` as well. 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. Law: whether the harness delivers an
|
||||||
|
event to extensions is settled in minutes by a throwaway probe extension that
|
||||||
|
timestamps `turn_end`/`agent_end` — never inferred from audio timing, which the
|
||||||
|
humanizer lags by seconds. 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)
|
## 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
|
Drop-in `agent/extensions/dankvoice.ts` and its 26-test suite retired; the
|
||||||
|
|||||||
@@ -19,11 +19,11 @@ Applications that ship with or are configured on CachyOS with Niri on the workst
|
|||||||
|
|
||||||
| Application | Version | Purpose |
|
| 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 |
|
| **Firefox** | 153.0 | Primary browser |
|
||||||
| **Chromium** | 150.0 | Secondary browser |
|
| **Chromium** | 150.0 | Secondary browser |
|
||||||
| **Nautilus** | 50.2.2 | File manager |
|
| **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 |
|
| **Steam** | 1.0.0.86 | Gaming platform |
|
||||||
|
|
||||||
## System Utilities
|
## System Utilities
|
||||||
|
|||||||
@@ -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.
|
* [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.
|
* [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.
|
* [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.
|
* [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.
|
* [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.
|
* [tmux](tmux.md) — Terminal multiplexer configuration, extended-keys setup, keyboard input best practices, and reload/restart procedures.
|
||||||
|
|||||||
@@ -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 <anything>` 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.
|
||||||
Reference in new issue
Block a user