VibeVM
Contents
On this page
en
Publisher
org.vibevm.core
Version
1.0.0latest
Audiences
Reading time
3 min
Rendered
Read aloud
never

vibe prefs — the settings TUI (PROP-041) visual sign-off

01Purpose. vibe prefs ui is the TUI surface over vibe-settings (PROP-040): a page tree, per-type edit forms, provenance, validation feedback, lint, and search — built on the vibe tree TUI's component library + theme (Шаг 3) and driven by vibe.prefs actions. The automated suite (347 vibe-cli tests, self-check all green) proves the model + the rendering fns; it cannot drive a real terminal and confirm the surface reads right — the page tree aligns, the form fields edit, the provenance shows the winning layer, the validation warnings land inline. That is what a human signs off here.

02This TUI writes user settings (~/.vibe/, the vibe-settings system) — palette/ tier/mode/sort/shape/static-first persist. Back them up or accept the delta.

Preconditions

  • 03A real interactive terminal (tty), ideally truecolor.
  • cargo build -p vibe-cli (invoke ./target/debug/vibe).
  • Run from the vibevm repo root (a project context → L1+L2+L3; elsewhere L1 only).

Steps

  1. 04Launch + the page tree.
05   ./target/debug/vibe prefs ui

06Left pane: the page hierarchy (Appearance / Tree groups → the palette/tier/ mode/sort/shape/static-first pages) through the same visual language as the tree TUI (│├└─, / fold, theme colours). / move, / fold.

  1. 07Open a page + the edit form (§4). Enter on a page → the right pane shows the form: per-type fields (bool→toggle, enum/closed-set→selection, int/string→text), each with an applies badge + a write-layer selector at the bottom. / field focus, Space/Enter toggle/select, typing edits a text field, Tab cycles the write-layer (L3 project / L1 no-project).
  1. 08Apply / reset (§4 Configurable lifecycle). Edit a field → the form is modified; a applies (writes through vibe-settings to the chosen layer; a scope-forbidden layer is refused with the reason), r resets. Quit + relaunch — the change persisted.
  1. 09Provenance (§5). ? on a focused field → an inline block: the resolved value + each layer's contribution (default/L1/L2/L3/cli/env), the winning layer marked, shadowed layers dimmed. x clears the focused write-layer for that key → the value falls back to the layer beneath.
  1. 10Validation + lint (§6). Type a wrong-type value → an inline warning line under the field (gold, rule cited); apply is blocked. c opens the lint modal — schema::validate across L1/L2/L3 as a flat warning list; selecting a warning jumps to the owning page focused on that field.
  1. 11Search (§7). / or F1 → the Search Everywhere window (the same engine the tree TUI uses): match by key / display name / description / synonyms; selecting opens the owning page focused on the field. Deprecated keys surface their replaced_by.
  1. 12Actions + footer (§8). The footer lists the enabled vibe.prefs actions for the current context (open/apply/reset/search/lint/layer/provenance/quit), keymap-bound. Esc pops the modal stack (provenance → page).
  1. 13Theme switch (the live Theme, §1 #built-on-tree-tui). Change vibe.tree.palette in the form (or ~/.vibe/settings.toml) → the whole prefs UI re-skins to match the tree TUI.

Pass

14Every step reads as described: the page tree aligns, the form edits + applies + persists, the provenance shows the winning layer, validation lands inline, the lint + search work, and the footer lists the live actions. The owner signs the date below.

Sign-off

  • 15[ ] Owner visual sign-off (date / initials): ______

For an agent

This page has a machine mirror. The citation carries the version rather than latest, so what an agent quotes does not move under it.

spec://org.vibevm.core/vibevm@1.0.0/manual-tests/MT-03-vibe-prefs-tui

.md.xmlllms.txt