diff --git a/docs/fish-config.1 b/docs/fish-config.1 index b5b0f6f..133d5f2 100644 --- a/docs/fish-config.1 +++ b/docs/fish-config.1 @@ -218,11 +218,23 @@ PAGER ov (falls back to less) .IP .nf \f[C] -SCROLLBACK_HISTORY_DIR \[ti]/.terminal_history -SCROLLBACK_HISTORY_MAX_FILES 100 +__fish_scrollback_history_dir (unset → \[ti]/.terminal_history) +__fish_scrollback_history_max_files (unset → 100) +SCROLLBACK_HISTORY_DIR \[ti]/.terminal_history (exported mirror) +SCROLLBACK_HISTORY_MAX_FILES 100 (exported mirror) \f[R] .fi .PP +The __fish_scrollback_history_* universal variables are the fish-style +source of truth \[em] set them via \f[V]config-settings\f[R] → Paths, or +\f[V]set -U\f[R] 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. +.PP Scrollback logs accumulate in SCROLLBACK_HISTORY_DIR as timestamped files. When the count exceeds SCROLLBACK_HISTORY_MAX_FILES the oldest are @@ -1712,21 +1724,33 @@ config-update --force \f[C] Synopsis: config-settings [-h] -Opens an interactive TUI for managing fish configuration settings. Handles -the six opinionated component categories (C1\[en]C6), the master disable -variable, and the __fish_user_dots_path path variable \[em] without having to -type or remember variable names. Two scope tabs allow independent per-scope -configuration for category toggles: +Opens an interactive TUI for managing fish configuration settings across +four pages, without having to type or remember variable names. Tab cycles +forward through the pages; Shift-Tab cycles backward. - Universal \[em] persists across all sessions (set -U) - Session \[em] current shell only (set -g) + Universal \[em] opinionated category toggles (C1\[en]C6) + master, persistent (set -U) + Session \[em] the same toggles, current shell only (set -g) + Sponge \[em] sponge history-scrubbing settings: delay, successful exit + codes, purge-only-on-exit, allow-previously-successful, and + extra sensitive variable-name tokens + Paths \[em] scrollback log directory, scrollback max files, and the + user-dots path -The Dots Path row always operates on the universal scope regardless of the -active tab. +Toggle rows use ← → (or h/l) along an OFF ← DEFAULT → ON scale; DEFAULT +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. List rows (e.g. +Extra secret, OK codes) accept values separated by commas and/or whitespace +\[em] \[dq]A, B\[dq], \[dq]A,B\[dq] and \[dq]A B\[dq] all yield the same two entries. 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 path variable use an inline edit prompt (Enter). Always available -regardless of the __fish_config_opinionated master state. +The Sponge and Paths pages always write universal variables \[em] these are +persistent, set-and-forget settings with no per-session scope. Editing a +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 four layout tiers (with a 6-column buffer on each side before stepping @@ -1739,20 +1763,12 @@ redraws within \[ti]0.3 s of a terminal resize with no keypress required. COLUMNS < 82 → 52-wide panel (default) Navigation: - ↑ ↓ / k j Move cursor - ← → / h l Set value: OFF ← DEFAULT → ON (toggle rows); LEFT clears path - Enter Edit the Dots Path (path row only) - Tab Switch scope (Universal ↔ Session) - q / Escape Exit - -Left/Right (or vim-style h/l) move the highlighted toggle value one step -along the OFF\[en]DEFAULT\[en]ON 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. + ↑ ↓ / k j Move cursor + ← → / h l Toggle rows: OFF ← DEFAULT → ON + ← / h Value rows: clear to default + Enter Value rows: edit inline (Sponge / Paths pages) + Tab / S-Tab Next / previous page + q / Escape Exit Flags: --help / -h Show usage. @@ -2569,6 +2585,26 @@ To add your own persistent patterns: set -U -a sponge_regex_patterns \[aq]your-regex-here\[aq] \f[R] .fi +.PP +To mark additional variable NAMES as credential-bearing (so Layer 2 +scrubs their values), add name tokens \[em] via +\f[V]config-settings\f[R] → Sponge, or directly: +.IP +.nf +\f[C] +set -U -a __fish_sponge_extra_sensitive ACME_API VAULT_PW +\f[R] +.fi +.PP +Tokens are folded into the Layer 2 name match case-insensitively as +substrings, so ACME_API also covers ACME_API_KEY. +(The match uses \f[V]--entire\f[R] to return the full variable name, so +partial-name tokens dereference the right value.) +.PP +The \f[V]config-settings\f[R] Sponge page also surfaces sponge\[cq]s own +tuning variables \[em] sponge_delay, sponge_successful_exit_codes, +sponge_purge_only_on_exit, and sponge_allow_previously_successful \[em] +so they can be changed without typing variable names. .SS Bundled Plugin Functionality .PP The remaining plugin functionality is bundled directly with this config diff --git a/docs/html/12-8-fisher-plugins.html b/docs/html/12-8-fisher-plugins.html index 485dc61..3c782ed 100644 --- a/docs/html/12-8-fisher-plugins.html +++ b/docs/html/12-8-fisher-plugins.html @@ -533,6 +533,18 @@ credentials in variables exported after login, such as tokens sourced from a project .env file mid-session.

To add your own persistent patterns:

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

The remaining plugin functionality is bundled directly with this diff --git a/docs/html/5-1-configuration-variables.html b/docs/html/5-1-configuration-variables.html index 8cdeb79..1ad5bf0 100644 --- a/docs/html/5-1-configuration-variables.html +++ b/docs/html/5-1-configuration-variables.html @@ -517,8 +517,19 @@ VISUAL unset by default; set a GUI editor via local.fish (the edit SUDO_EDITOR same as EDITOR PAGER ov (falls back to less)

Scrollback History

-
SCROLLBACK_HISTORY_DIR        ~/.terminal_history
-SCROLLBACK_HISTORY_MAX_FILES  100
+
__fish_scrollback_history_dir        (unset → ~/.terminal_history)
+__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. When the count exceeds SCROLLBACK_HISTORY_MAX_FILES the oldest are pruned automatically on exit. Use logs to browse them diff --git a/docs/html/9-5-functions-reference.html b/docs/html/9-5-functions-reference.html index 702b6f8..68f0dcb 100644 --- a/docs/html/9-5-functions-reference.html +++ b/docs/html/9-5-functions-reference.html @@ -1159,21 +1159,33 @@ config-update --force

config-settings

Synopsis:  config-settings [-h]
 
-Opens an interactive TUI for managing fish configuration settings. Handles
-the six opinionated component categories (C1–C6), the master disable
-variable, and the __fish_user_dots_path path variable — without having to
-type or remember variable names. Two scope tabs allow independent per-scope
-configuration for category toggles:
+Opens an interactive TUI for managing fish configuration settings across
+four pages, without having to type or remember variable names. Tab cycles
+forward through the pages; Shift-Tab cycles backward.
 
-  Universal — persists across all sessions (set -U)
-  Session   — current shell only (set -g)
+  Universal — opinionated category toggles (C1–C6) + master, persistent (set -U)
+  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
-active tab.
+Toggle rows use ← → (or h/l) along an OFF ← DEFAULT → ON scale; DEFAULT
+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. List rows (e.g.
+Extra secret, OK codes) accept values separated by commas and/or whitespace
+— "A, B", "A,B" and "A B" all yield the same two entries. 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 path variable use an inline edit prompt (Enter). Always available
-regardless of the __fish_config_opinionated master state.
+The Sponge and Paths pages always write universal variables — these are
+persistent, set-and-forget settings with no per-session scope. Editing a
+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
 four layout tiers (with a 6-column buffer on each side before stepping
@@ -1186,20 +1198,12 @@ redraws within ~0.3 s of a terminal resize with no keypress required.
   COLUMNS  < 82  →  52-wide panel (default)
 
 Navigation:
-  ↑ ↓ / k j   Move cursor
-  ← → / h l   Set value: OFF ← DEFAULT → ON (toggle rows); LEFT clears path
-  Enter        Edit the Dots Path (path row only)
-  Tab          Switch scope (Universal ↔ Session)
-  q / Escape   Exit
-
-Left/Right (or vim-style h/l) move the highlighted toggle value one step
-along the OFF–DEFAULT–ON 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.
+  ↑ ↓ / k j     Move cursor
+  ← → / h l     Toggle rows: OFF ← DEFAULT → ON
+  ←  / h        Value rows: clear to default
+  Enter         Value rows: edit inline (Sponge / Paths pages)
+  Tab / S-Tab   Next / previous page
+  q / Escape    Exit
 
 Flags:
   --help / -h   Show usage.
diff --git a/docs/wiki/1-configuration-variables.md b/docs/wiki/1-configuration-variables.md
index 0a40a30..873f5c9 100644
--- a/docs/wiki/1-configuration-variables.md
+++ b/docs/wiki/1-configuration-variables.md
@@ -36,8 +36,19 @@ Tools that respect XDG are directed to these paths rather than polluting $HOME.
 
 ## Scrollback History
 
-    SCROLLBACK_HISTORY_DIR        ~/.terminal_history
-    SCROLLBACK_HISTORY_MAX_FILES  100
+    __fish_scrollback_history_dir        (unset → ~/.terminal_history)
+    __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.
 When the count exceeds SCROLLBACK_HISTORY_MAX_FILES the oldest are pruned
diff --git a/docs/wiki/5-functions-reference.md b/docs/wiki/5-functions-reference.md
index 2d1de86..f95170b 100644
--- a/docs/wiki/5-functions-reference.md
+++ b/docs/wiki/5-functions-reference.md
@@ -845,21 +845,33 @@
 
     Synopsis:  config-settings [-h]
 
-    Opens an interactive TUI for managing fish configuration settings. Handles
-    the six opinionated component categories (C1–C6), the master disable
-    variable, and the __fish_user_dots_path path variable — without having to
-    type or remember variable names. Two scope tabs allow independent per-scope
-    configuration for category toggles:
+    Opens an interactive TUI for managing fish configuration settings across
+    four pages, without having to type or remember variable names. Tab cycles
+    forward through the pages; Shift-Tab cycles backward.
 
-      Universal — persists across all sessions (set -U)
-      Session   — current shell only (set -g)
+      Universal — opinionated category toggles (C1–C6) + master, persistent (set -U)
+      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
-    active tab.
+    Toggle rows use ← → (or h/l) along an OFF ← DEFAULT → ON scale; DEFAULT
+    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. List rows (e.g.
+    Extra secret, OK codes) accept values separated by commas and/or whitespace
+    — "A, B", "A,B" and "A B" all yield the same two entries. 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 path variable use an inline edit prompt (Enter). Always available
-    regardless of the __fish_config_opinionated master state.
+    The Sponge and Paths pages always write universal variables — these are
+    persistent, set-and-forget settings with no per-session scope. Editing a
+    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
     four layout tiers (with a 6-column buffer on each side before stepping
@@ -872,20 +884,12 @@
       COLUMNS  < 82  →  52-wide panel (default)
 
     Navigation:
-      ↑ ↓ / k j   Move cursor
-      ← → / h l   Set value: OFF ← DEFAULT → ON (toggle rows); LEFT clears path
-      Enter        Edit the Dots Path (path row only)
-      Tab          Switch scope (Universal ↔ Session)
-      q / Escape   Exit
-
-    Left/Right (or vim-style h/l) move the highlighted toggle value one step
-    along the OFF–DEFAULT–ON 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.
+      ↑ ↓ / k j     Move cursor
+      ← → / h l     Toggle rows: OFF ← DEFAULT → ON
+      ←  / h        Value rows: clear to default
+      Enter         Value rows: edit inline (Sponge / Paths pages)
+      Tab / S-Tab   Next / previous page
+      q / Escape    Exit
 
     Flags:
       --help / -h   Show usage.
diff --git a/docs/wiki/8-fisher-plugins.md b/docs/wiki/8-fisher-plugins.md
index ec1a6ea..2b0e12c 100644
--- a/docs/wiki/8-fisher-plugins.md
+++ b/docs/wiki/8-fisher-plugins.md
@@ -58,6 +58,20 @@ To add your own persistent patterns:
 
     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
 
 The remaining plugin functionality is bundled directly with this config rather