docs(c5): feature session logging prominently with transparency callout
Add a Session Logging section and a CAUTION callout to the README, and a matching privacy notice to docs/fish-config.md, making clear that this config logs terminal sessions (Kitty/tmux/zellij/paru/yay) to ~/.terminal_history by default. Point users at both the __fish_config_op_logging variable and the interactive config-toggle TUI for opting out.
This commit is contained in:
@@ -8,6 +8,7 @@ abbreviation system for keyboard-driven workflows.
|
|||||||
## Table of Contents
|
## Table of Contents
|
||||||
|
|
||||||
- [Overview](#overview)
|
- [Overview](#overview)
|
||||||
|
- [Session Logging](#session-logging)
|
||||||
- [Documentation](#documentation)
|
- [Documentation](#documentation)
|
||||||
- [Installation](#installation)
|
- [Installation](#installation)
|
||||||
- [Personalization](#personalization)
|
- [Personalization](#personalization)
|
||||||
@@ -27,10 +28,71 @@ This config layers on top of the CachyOS base Fish configuration and adds:
|
|||||||
- **Smart CLI wrappers** that prefer modern tools (`eza`, `bat`, `btop`, `dust`, `prettyping`) with graceful fallbacks
|
- **Smart CLI wrappers** that prefer modern tools (`eza`, `bat`, `btop`, `dust`, `prettyping`) with graceful fallbacks
|
||||||
- **Auto Python venv** activation on directory change (direnv-aware)
|
- **Auto Python venv** activation on directory change (direnv-aware)
|
||||||
- **Kitty terminal** deep integration for splits, tabs, and SSH
|
- **Kitty terminal** deep integration for splits, tabs, and SSH
|
||||||
|
- **Automatic session logging** — terminal scrollback, multiplexer panes (tmux/zellij), and AUR-helper output are captured to `~/.terminal_history` (see the caution below and [Session Logging](#session-logging))
|
||||||
- **AI workflow** helpers for Claude and Antigravity session management
|
- **AI workflow** helpers for Claude and Antigravity session management
|
||||||
- **WakaTime** shell activity tracking
|
- **WakaTime** shell activity tracking
|
||||||
- **Opt-out toggles** for every opinionated component — see [Minimal Mode](#minimal-mode)
|
- **Opt-out toggles** for every opinionated component — see [Minimal Mode](#minimal-mode)
|
||||||
|
|
||||||
|
> [!CAUTION]
|
||||||
|
> **This configuration logs your terminal sessions to disk by default.**
|
||||||
|
> Out of the box it silently captures terminal output to `~/.terminal_history`:
|
||||||
|
> Kitty scrollback when a window closes, live tmux pane streams, zellij pane
|
||||||
|
> snapshots on exit, and full `paru`/`yay` output. These logs can contain
|
||||||
|
> command output, file contents, and anything else printed to your terminal.
|
||||||
|
> Nothing is sent off your machine, but the files persist locally until pruned.
|
||||||
|
>
|
||||||
|
> To turn all logging off, set the C5 category variable:
|
||||||
|
>
|
||||||
|
> ```fish
|
||||||
|
> set -U __fish_config_op_logging off
|
||||||
|
> ```
|
||||||
|
>
|
||||||
|
> Or run **`config-toggle`** for an interactive menu to flip logging (and any
|
||||||
|
> other opinionated category) on or off — no variable names to remember.
|
||||||
|
>
|
||||||
|
> This takes effect immediately in every open shell. See [Session Logging](#session-logging)
|
||||||
|
> for exactly what is captured and where, and [Minimal Mode](#minimal-mode) for the
|
||||||
|
> full set of opt-out toggles.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Session Logging
|
||||||
|
|
||||||
|
This config captures terminal output to `~/.terminal_history` (override with
|
||||||
|
`$SCROLLBACK_HISTORY_DIR`) so you can search back through past sessions. It is
|
||||||
|
**on by default**. Five sources feed it:
|
||||||
|
|
||||||
|
| Source | When it captures | Log file |
|
||||||
|
|---|---|---|
|
||||||
|
| Kitty scrollback | When a Kitty window/tab closes | `scrollback_<timestamp>.log` |
|
||||||
|
| tmux pane | Continuously while the pane is open (`pipe-pane`) | `tmux_<session>-w<win>-p<pane>_<timestamp>.log` |
|
||||||
|
| zellij pane | Snapshot taken on shell exit (`dump-screen`) | `zellij_<session>-p<pane>_<timestamp>.log` |
|
||||||
|
| `paru` wrapper | Every `paru` invocation | `paru_<timestamp>.log` |
|
||||||
|
| `yay` wrapper | Every `yay` invocation | `yay_<timestamp>.log` |
|
||||||
|
|
||||||
|
Old logs are pruned automatically to stay within `$SCROLLBACK_HISTORY_MAX_FILES`
|
||||||
|
(default 100) per source, and empty/trivial captures are discarded.
|
||||||
|
|
||||||
|
**These logs can contain secrets** — anything printed to your terminal (command
|
||||||
|
output, file dumps, tokens echoed to stdout) ends up in them. They never leave
|
||||||
|
your machine, but treat `~/.terminal_history` as sensitive.
|
||||||
|
|
||||||
|
Disable all of it with a single universal variable:
|
||||||
|
|
||||||
|
```fish
|
||||||
|
set -U __fish_config_op_logging off # disable; takes effect in every open shell
|
||||||
|
set -Ue __fish_config_op_logging # re-enable (erase the override)
|
||||||
|
```
|
||||||
|
|
||||||
|
Prefer an interactive interface? Run **`config-toggle`** for a full-screen
|
||||||
|
picker that flips logging — and every other opinionated category — on or off
|
||||||
|
per session or universally, without memorizing variable names.
|
||||||
|
|
||||||
|
Disabling also removes the generated `paru`/`yay` log wrappers and tells the
|
||||||
|
Kitty watcher to skip capture via a sentinel file — no shell or terminal
|
||||||
|
restart required. Logging is category **C5** in [Minimal Mode](#minimal-mode);
|
||||||
|
`set -U __fish_config_opinionated 0` turns it off along with everything else.
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
## Documentation
|
## Documentation
|
||||||
|
|||||||
+22
-1
@@ -32,12 +32,27 @@ A production-grade Fish shell configuration targeting Fish 4.x. It provides:
|
|||||||
- Drop-in replacements for common Unix tools (ls, cat, rm, du, ping, less)
|
- Drop-in replacements for common Unix tools (ls, cat, rm, du, ping, less)
|
||||||
- Deep Kitty and WezTerm terminal integration: tab/window/pane management from
|
- Deep Kitty and WezTerm terminal integration: tab/window/pane management from
|
||||||
the command line
|
the command line
|
||||||
- Scrollback history snapshots saved to ~/.terminal_history on session exit
|
- Automatic session logging: terminal scrollback, tmux/zellij panes, and
|
||||||
|
paru/yay output captured to ~/.terminal_history (on by default; see below)
|
||||||
- Automatic Python virtualenv activation on directory change
|
- Automatic Python virtualenv activation on directory change
|
||||||
- Cross-platform package management via pkg and fish-deps
|
- Cross-platform package management via pkg and fish-deps
|
||||||
- AI session helpers for Claude Code and Antigravity
|
- AI session helpers for Claude Code and Antigravity
|
||||||
- Catppuccin Mocha color theme throughout
|
- Catppuccin Mocha color theme throughout
|
||||||
|
|
||||||
|
┌───────────────────────────────────────────────────────────────────────────┐
|
||||||
|
│ CAUTION - SESSION LOGGING IS ON BY DEFAULT │
|
||||||
|
│ │
|
||||||
|
│ This configuration silently records terminal output to │
|
||||||
|
│ ~/.terminal_history: Kitty scrollback on window close, live tmux pane │
|
||||||
|
│ streams, zellij pane snapshots on exit, and full paru/yay output. These │
|
||||||
|
│ logs can contain command output, file contents, and secrets printed to │
|
||||||
|
│ the terminal. Nothing leaves your machine, but the files persist locally. │
|
||||||
|
│ │
|
||||||
|
│ Disable all logging with: set -U __fish_config_op_logging off │
|
||||||
|
│ Prefer a menu? Run the interactive picker: config-toggle │
|
||||||
|
│ See Section 7 (C5 - Logging and Capture) for the full breakdown. │
|
||||||
|
└───────────────────────────────────────────────────────────────────────────┘
|
||||||
|
|
||||||
The configuration is split across:
|
The configuration is split across:
|
||||||
|
|
||||||
config.fish Main entry point; sets env vars and PATH
|
config.fish Main entry point; sets env vars and PATH
|
||||||
@@ -51,6 +66,8 @@ The configuration is split across:
|
|||||||
logging-events.fish C5 --on-variable event handlers; syncs logging state at startup
|
logging-events.fish C5 --on-variable event handlers; syncs logging state at startup
|
||||||
paru-wrapper.fish Auto-generates ~/.local/bin/paru logging wrapper
|
paru-wrapper.fish Auto-generates ~/.local/bin/paru logging wrapper
|
||||||
puffer.fish !! / !$ / ./ expansion (bundled from nickeb96/puffer-fish)
|
puffer.fish !! / !$ / ./ expansion (bundled from nickeb96/puffer-fish)
|
||||||
|
tmux-logging.fish C5 starts tmux pipe-pane capture when fish runs inside tmux
|
||||||
|
zellij-logging.fish C5 fish_exit handler dumping zellij pane scrollback on exit
|
||||||
sponge_privacy.fish Sponge privacy patterns; filters credentials from history
|
sponge_privacy.fish Sponge privacy patterns; filters credentials from history
|
||||||
starship.fish fish_prompt with OSC 133 shell-integration markers
|
starship.fish fish_prompt with OSC 133 shell-integration markers
|
||||||
tailscale.fish Tailscale CLI tab completions
|
tailscale.fish Tailscale CLI tab completions
|
||||||
@@ -1552,6 +1569,10 @@ Examples:
|
|||||||
set -U __fish_config_op_greeting 1
|
set -U __fish_config_op_greeting 1
|
||||||
# (erase both to go back to full-flavor defaults)
|
# (erase both to go back to full-flavor defaults)
|
||||||
|
|
||||||
|
For an interactive alternative to setting these variables by hand, run
|
||||||
|
config-toggle — a full-screen TUI that flips any category (including C5
|
||||||
|
logging) on or off, per session or universally. See its entry in Section 5.
|
||||||
|
|
||||||
Notes:
|
Notes:
|
||||||
|
|
||||||
- Command shadows (rm, cat, ls, ...) react immediately; conf.d-level
|
- Command shadows (rm, cat, ls, ...) react immediately; conf.d-level
|
||||||
|
|||||||
Reference in New Issue
Block a user