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.
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`.
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.
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 sponge2026-06-09 02:01:50 +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.
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
Summary
fish_pluginsnow containsjorgebucaran/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.fisher installfor 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.indexgains entries for §8 subsections and the previously missing §9–11.first_run.fish→ "Fisher update failed".Files changed
.gitignorefish_pluginsmeaningful-ooo/spongedocs/fish-config.mddocs/fish-config.indexREADME.mdrequirements.mdconf.d/first_run.fishManual Verification
help config fisher-managed— confirm it resolves to the Fisher-Managed Plugins subsection listing sponge.help config bundled-plugins— confirm it resolves to the Bundled Plugin Functionality subsection (no sponge).help config installationandhelp config viewing— confirm §9 and §11 resolve correctly.git statusis clean after afisher update(sponge/fisher files no longer appear as untracked).set -Ue __fish_config_first_run_complete) — confirm sponge installs and the error message reads "Fisher update failed" if fisher is unavailable.cat fish_pluginsshows bothjorgebucaran/fisherandmeaningful-ooo/sponge.docs: clarify that plugin functionality is bundled, not managed by fisherto docs(fisher): clarify bundled vs fisher-managed plugins; add sponge