docs: document multi-page config-settings (sponge + paths)

- §1 Scrollback History: __fish_scrollback_history_* source-of-truth + exported
  mirror, and the no-global-shadow rationale
- §Sponge History Filtering: __fish_sponge_extra_sensitive name tokens (--entire
  match) and the tuning vars surfaced on the Sponge page
- config-settings function reference: four-page model, Tab/Shift-Tab, value rows
- index + README updated
This commit is contained in:
2026-06-24 00:34:57 -04:00
parent fbfc52e675
commit 5cf5ca07c5
3 changed files with 62 additions and 29 deletions
+1 -1
View File
@@ -255,7 +255,7 @@ test -f "$__fish_user_dots_path/local.fish"
Everything opinionated in this config — command shadows, startup side-effects, key and environment overrides, terminal integrations, logging, and the first-run greeting — is active by default but can be switched off. Everything opinionated in this config — command shadows, startup side-effects, key and environment overrides, terminal integrations, logging, and the first-run greeting — is active by default but can be switched off.
> **The easy way — `config-settings`:** Run `config-settings` for an interactive TUI that flips every setting below on, off, or back to default — per-session or universally — without typing a single variable name. Use the arrow keys (or `h`/`j`/`k`/`l`) to navigate and adjust, `Tab` to switch scope, and `q` to quit. Changes apply instantly. The panel auto-sizes to your terminal width (four tiers from 52- to 78-wide with a 6-column margin), centers itself horizontally, and redraws within ~0.3 s of a resize. > **The easy way — `config-settings`:** Run `config-settings` for an interactive TUI that manages settings across four pages — **Universal** and **Session** (the opinionated category toggles below, persistent or per-shell), **Sponge** (history-scrubbing: delay, exit codes, purge-on-exit, and extra sensitive variable names), and **Paths** (scrollback log dir, max files, and the user-dots path) — without typing a single variable name. Navigate with the arrow keys (or `h`/`j`/`k`/`l`); toggle rows step OFF ← DEFAULT → ON, value rows edit inline with `Enter` and clear with `←`. `Tab`/`Shift-Tab` cycle pages and `q` quits. Changes apply instantly. The panel auto-sizes to your terminal width (four tiers from 52- to 78-wide with a 6-column margin), centers itself horizontally, and redraws within ~0.3 s of a resize.
If you'd rather set them by hand, each category is controlled by a universal variable. Six category toggles and one master switch are available: If you'd rather set them by hand, each category is controlled by a universal variable. Six category toggles and one master switch are available:
+6
View File
@@ -24,6 +24,9 @@ toolhomes=## Tool Homes (XDG-compliant)
editor=## Editor and Pager editor=## Editor and Pager
pager=## Editor and Pager pager=## Editor and Pager
scrollback=## Scrollback History scrollback=## Scrollback History
__fish_scrollback_history_dir=## Scrollback History
__fish_scrollback_history_max_files=## Scrollback History
scrollback-dir=## Scrollback History
# ── Section 2: PATH ─────────────────────────────────────────── # ── Section 2: PATH ───────────────────────────────────────────
path=# 2. PATH SETUP path=# 2. PATH SETUP
@@ -258,6 +261,9 @@ sponge=## Fisher-Managed Plugins
sponge-filtering=## Sponge History Filtering sponge-filtering=## Sponge History Filtering
history-filtering=## Sponge History Filtering history-filtering=## Sponge History Filtering
privacy=## Sponge History Filtering privacy=## Sponge History Filtering
__fish_sponge_extra_sensitive=## Sponge History Filtering
extra-sensitive=## Sponge History Filtering
sponge-settings=### config-settings
bundled-plugins=## Bundled Plugin Functionality bundled-plugins=## Bundled Plugin Functionality
fish-plugins-manifest=## fish_plugins Manifest fish-plugins-manifest=## fish_plugins Manifest
+55 -28
View File
@@ -166,8 +166,19 @@ Tools that respect XDG are directed to these paths rather than polluting $HOME.
## Scrollback History ## Scrollback History
SCROLLBACK_HISTORY_DIR ~/.terminal_history __fish_scrollback_history_dir (unset → ~/.terminal_history)
SCROLLBACK_HISTORY_MAX_FILES 100 __fish_scrollback_history_max_files (unset → 100)
SCROLLBACK_HISTORY_DIR ~/.terminal_history (exported mirror)
SCROLLBACK_HISTORY_MAX_FILES 100 (exported mirror)
The __fish_scrollback_history_* universal variables are the fish-style source
of truth — set them via `config-settings` → Paths, or `set -U` directly.
config.fish exports the SCROLLBACK_HISTORY_* mirrors from them, because the
POSIX wrapper scripts (paru/yay/tmux/zellij logging and _prune_terminal_logs)
read the exported names from the environment. When the __fish_ vars are unset,
the documented defaults are exported. config.fish deliberately does not create
a global source var, which would shadow the universal and stop live edits from
taking effect.
Scrollback logs accumulate in SCROLLBACK_HISTORY_DIR as timestamped files. Scrollback logs accumulate in SCROLLBACK_HISTORY_DIR as timestamped files.
When the count exceeds SCROLLBACK_HISTORY_MAX_FILES the oldest are pruned When the count exceeds SCROLLBACK_HISTORY_MAX_FILES the oldest are pruned
@@ -1352,21 +1363,31 @@ Add -i (interactive confirmation) to destructive commands:
Synopsis: config-settings [-h] Synopsis: config-settings [-h]
Opens an interactive TUI for managing fish configuration settings. Handles Opens an interactive TUI for managing fish configuration settings across
the six opinionated component categories (C1C6), the master disable four pages, without having to type or remember variable names. Tab cycles
variable, and the __fish_user_dots_path path variable — without having to forward through the pages; Shift-Tab cycles backward.
type or remember variable names. Two scope tabs allow independent per-scope
configuration for category toggles:
Universal — persists across all sessions (set -U) Universal — opinionated category toggles (C1C6) + master, persistent (set -U)
Session — current shell only (set -g) Session — the same toggles, current shell only (set -g)
Sponge — sponge history-scrubbing settings: delay, successful exit
codes, purge-only-on-exit, allow-previously-successful, and
extra sensitive variable-name tokens
Paths — scrollback log directory, scrollback max files, and the
user-dots path
The Dots Path row always operates on the universal scope regardless of the Toggle rows use ← → (or h/l) along an OFF ← DEFAULT → ON scale; DEFAULT
active tab. erases the variable so the master switch / built-in default applies. Value
rows (the path/int/list settings on the Sponge and Paths pages) use Enter to
edit inline; ← / h clears the value back to its default. Changes apply
immediately. Always available regardless of the __fish_config_opinionated
master state.
Changes to category toggles apply immediately on each keypress. Changes to The Sponge and Paths pages always write universal variables — these are
the path variable use an inline edit prompt (Enter). Always available persistent, set-and-forget settings with no per-session scope. Editing a
regardless of the __fish_config_opinionated master state. scrollback row updates both the __fish_scrollback_history_* source-of-truth
variables and the exported SCROLLBACK_HISTORY_* mirrors, so the AUR/tmux/
zellij log wrappers (which read the exported names) see the change in the
running session.
The panel adapts to the terminal width automatically, selecting from The panel adapts to the terminal width automatically, selecting from
four layout tiers (with a 6-column buffer on each side before stepping four layout tiers (with a 6-column buffer on each side before stepping
@@ -1379,20 +1400,12 @@ Add -i (interactive confirmation) to destructive commands:
COLUMNS < 82 → 52-wide panel (default) COLUMNS < 82 → 52-wide panel (default)
Navigation: Navigation:
↑ ↓ / k j Move cursor ↑ ↓ / k j Move cursor
← → / h l Set value: OFF ← DEFAULT → ON (toggle rows); LEFT clears path ← → / h l Toggle rows: OFF ← DEFAULT → ON
Enter Edit the Dots Path (path row only) ← / h Value rows: clear to default
Tab Switch scope (Universal ↔ Session) Enter Value rows: edit inline (Sponge / Paths pages)
q / Escape Exit Tab / S-Tab Next / previous page
q / Escape Exit
Left/Right (or vim-style h/l) move the highlighted toggle value one step
along the OFFDEFAULTON scale and stop at the ends. DEFAULT erases the
variable so the master switch / built-in default applies. On the Dots Path
row, LEFT/h clears the universal variable; RIGHT/l is a no-op (use Enter).
Dots Path row [U] tag: the tag confirms this row always writes to the
universal scope, regardless of which tab is active. Setting it per-session
would have no effect on startup sourcing.
Flags: Flags:
--help / -h Show usage. --help / -h Show usage.
@@ -2043,6 +2056,20 @@ To add your own persistent patterns:
set -U -a sponge_regex_patterns 'your-regex-here' set -U -a sponge_regex_patterns 'your-regex-here'
To mark additional variable NAMES as credential-bearing (so Layer 2 scrubs
their values), add name tokens — via `config-settings` → Sponge, or directly:
set -U -a __fish_sponge_extra_sensitive ACME_API VAULT_PW
Tokens are folded into the Layer 2 name match case-insensitively as substrings,
so ACME_API also covers ACME_API_KEY. (The match uses `--entire` to return the
full variable name, so partial-name tokens dereference the right value.)
The `config-settings` Sponge page also surfaces sponge's own tuning variables —
sponge_delay, sponge_successful_exit_codes, sponge_purge_only_on_exit, and
sponge_allow_previously_successful — so they can be changed without typing
variable names.
## Bundled Plugin Functionality ## Bundled Plugin Functionality
The remaining plugin functionality is bundled directly with this config rather The remaining plugin functionality is bundled directly with this config rather