docs(fisher): clarify bundled vs fisher-managed plugins; add sponge #37

Merged
rootiest merged 7 commits from docs/fisher-plugins-bundled into main 2026-06-09 02:31:32 +00:00
Owner

Summary

  • fish_plugins now contains jorgebucaran/fisher + meaningful-ooo/sponge. Sponge is the one genuinely Fisher-managed plugin, giving the first-run bootstrap a concrete purpose.
  • functions/fisher.fish, completions/fisher.fish, and all sponge files are added to .gitignore — Fisher owns them exclusively, eliminating any committed/managed conflict.
  • The remaining plugin functionality (catppuccin/fish, fzf.fish, done, autopair, puffer-fish) is bundled directly in the repo as customized Fish 4.x-compatible versions. Running fisher install for these would overwrite the customizations.
  • docs/fish-config.md §8 now has two clearly separated subsections: Fisher-Managed Plugins and Bundled Plugin Functionality.
  • docs/fish-config.index gains entries for §8 subsections and the previously missing §9–11.
  • Fixes misleading "Plugin sync failed" message in first_run.fish → "Fisher update failed".

Files changed

File Change
.gitignore Gitignore fisher.fish, completions/fisher.fish, and all sponge files
fish_plugins Add meaningful-ooo/sponge
docs/fish-config.md §8 split into Fisher-managed vs bundled sections; §7 and §9 text corrected
docs/fish-config.index Add §8 subsection keys; add missing §9–11 entries; fix FZF heading key
README.md Updated Fisher bullet and installation blurb
requirements.md Sponge row added; bundled-plugin note updated
conf.d/first_run.fish Fix error message wording

Manual Verification

  • Run help config fisher-managed — confirm it resolves to the Fisher-Managed Plugins subsection listing sponge.
  • Run help config bundled-plugins — confirm it resolves to the Bundled Plugin Functionality subsection (no sponge).
  • Run help config installation and help config viewing — confirm §9 and §11 resolve correctly.
  • Confirm git status is clean after a fisher update (sponge/fisher files no longer appear as untracked).
  • Open a fresh shell (after set -Ue __fish_config_first_run_complete) — confirm sponge installs and the error message reads "Fisher update failed" if fisher is unavailable.
  • Confirm cat fish_plugins shows both jorgebucaran/fisher and meaningful-ooo/sponge.
## Summary - `fish_plugins` now contains `jorgebucaran/fisher` + `meaningful-ooo/sponge`. Sponge is the one genuinely Fisher-managed plugin, giving the first-run bootstrap a concrete purpose. - `functions/fisher.fish`, `completions/fisher.fish`, and all sponge files are added to `.gitignore` — Fisher owns them exclusively, eliminating any committed/managed conflict. - The remaining plugin functionality (catppuccin/fish, fzf.fish, done, autopair, puffer-fish) is bundled directly in the repo as customized Fish 4.x-compatible versions. Running `fisher install` for these would overwrite the customizations. - `docs/fish-config.md` §8 now has two clearly separated subsections: **Fisher-Managed Plugins** and **Bundled Plugin Functionality**. - `docs/fish-config.index` gains entries for §8 subsections and the previously missing §9–11. - Fixes misleading "Plugin sync failed" message in `first_run.fish` → "Fisher update failed". ## Files changed | File | Change | |---|---| | `.gitignore` | Gitignore fisher.fish, completions/fisher.fish, and all sponge files | | `fish_plugins` | Add `meaningful-ooo/sponge` | | `docs/fish-config.md` | §8 split into Fisher-managed vs bundled sections; §7 and §9 text corrected | | `docs/fish-config.index` | Add §8 subsection keys; add missing §9–11 entries; fix FZF heading key | | `README.md` | Updated Fisher bullet and installation blurb | | `requirements.md` | Sponge row added; bundled-plugin note updated | | `conf.d/first_run.fish` | Fix error message wording | ## Manual Verification - [x] Run `help config fisher-managed` — confirm it resolves to the Fisher-Managed Plugins subsection listing sponge. - [x] Run `help config bundled-plugins` — confirm it resolves to the Bundled Plugin Functionality subsection (no sponge). - [x] Run `help config installation` and `help config viewing` — confirm §9 and §11 resolve correctly. - [x] Confirm `git status` is clean after a `fisher update` (sponge/fisher files no longer appear as untracked). - [x] Open a fresh shell (after `set -Ue __fish_config_first_run_complete`) — confirm sponge installs and the error message reads "Fisher update failed" if fisher is unavailable. - [x] Confirm `cat fish_plugins` shows both `jorgebucaran/fisher` and `meaningful-ooo/sponge`.
rootiest added 1 commit 2026-06-09 01:52:38 +00:00
Only jorgebucaran/fisher itself is in fish_plugins. The functionality
from catppuccin/fish, fzf.fish, done, autopair, and puffer-fish is
bundled directly with this config in modified form and must not be
installed or updated via fisher.

Removes sponge (not present), corrects file path mappings for bundled
components, fixes stale "Plugin sync failed" message in first_run.fish,
and expands fish-config.index with missing sections 9–11.
rootiest added 1 commit 2026-06-09 02:01:33 +00:00
meaningful-ooo/sponge is now the one true Fisher-managed plugin,
giving the bootstrap a concrete purpose. Its files (and functions/fisher.fish,
completions/fisher.fish) are gitignored so Fisher owns them exclusively —
no committed/managed conflict possible.

Updates docs, index, requirements, and README to distinguish
Fisher-managed plugins from bundled customized ones.
rootiest changed title from docs: clarify that plugin functionality is bundled, not managed by fisher to docs(fisher): clarify bundled vs fisher-managed plugins; add sponge 2026-06-09 02:01:50 +00:00
rootiest added 1 commit 2026-06-09 02:03:28 +00:00
rootiest added 1 commit 2026-06-09 02:23:32 +00:00
conf.d/sponge_privacy.fish registers patterns and filters that prevent
credentials from reaching fish history:

  Layer 1 (static regex, universal): auth flags, env assignments,
  credential-bearing URLs, Authorization headers, sshpass, docker
  login, openssl -passin/-passout

  Layer 2 (dynamic values, session globals): on the first prompt, after
  secrets.fish has loaded, reads the literal values of all exported
  credential-named vars (TOKEN, PASSWORD, SECRET, etc.), escapes them
  for regex, and merges them with the static patterns as a session
  global — auto-refreshes on login so rotated tokens are never stale

  Layer 3 (per-command filter, sponge_filter_secrets): catches
  credentials in variables exported mid-session (e.g. project .env)

Also exempts functions/sponge_filter_secrets.fish from the sponge_*
gitignore glob so our custom filter is committed alongside the config.
rootiest added 1 commit 2026-06-09 02:24:35 +00:00
rootiest added 1 commit 2026-06-09 02:26:04 +00:00
rootiest added 1 commit 2026-06-09 02:29:24 +00:00
rootiest merged commit 21126012dc into main 2026-06-09 02:31:32 +00:00
rootiest deleted branch docs/fisher-plugins-bundled 2026-06-09 02:31:32 +00:00
Sign in to join this conversation.