feat(deps): add Optional/Terminal Emulator tiers, fix docker prompt hang and ov install path #104

Merged
rootiest merged 1 commits from feat-fish-deps-optional-tiers into main 2026-08-14 20:44:11 +00:00
Owner

Summary

Follows up on notes in AGENTS/devlogs/2026-8-10_notes-on-dependencies.md from fresh-install testing.

Why: The old three-tier dependency classification (Required/Recommended/Integrations) lumped genuinely essential tools in with minor single-function wrapper conveniences, so fish-deps install prompted to install things like btop, lazygit, or a whole terminal emulator (kitty/wezterm) right alongside bat/eza. Testing also surfaced two real bugs: the Docker context indicator in the prompt broke on every single prompt render when docker wasn't installed, and ov's catalog entry pointed at the wrong cargo crate.

What:

  • Split the catalog into five tiers: Required, Recommended, Optional (new — single-purpose wrapper conveniences: btop, dust, duf, prettyping, go, lazygit, lazydocker, docker, yt-dlp, screen), Terminal Emulators (new — kitty, wezterm), and Integrations.
  • fish-deps install/sync skip Optional and Terminal Emulator tiers by default, with new --optional, --terminals, and --all flags to include them, plus a one-line summary of what was skipped.
  • Fixed _fish_deps_status treating missing Integrations as critical (red) — only Required is red now.
  • Fixed fish_right_prompt calling docker context show with no type -q docker guard, unlike every other optional integration in this config — this printed a visible "Unknown command: docker" error block on every prompt when docker wasn't installed. Also hardened the ld wrapper with explicit docker/lazydocker presence checks.
  • Fixed ov's catalog entry offering cargo install ov, which silently installs an unrelated crate (not the noborus/ov pager). ov now prefers go install github.com/noborus/ov@latest (ahead of the system PM) when go is available — covering distros like Debian/Ubuntu that don't package ov in their base repos — falling back to the system PM otherwise.

Docs (docs/manual/06-dependency-catalog.md) updated to match; docs/fish-config.md/.1 and the site content regenerate automatically via the existing CI job.

Manual Verification Checklist

  • fish-deps status shows five sections (Required, Recommended, Optional, Terminal Emulators, Integrations) with the right tools in each
  • fish-deps install (no flags) does not prompt for anything in Optional or Terminal Emulators; fish-deps install --all does
  • On a machine without docker installed, opening a new prompt does not print any "Unknown command" error
  • ld prints a clear error (not a raw command-not-found) when docker or lazydocker is missing
  • With ov missing and go installed, fish-deps install offers go install github.com/noborus/ov@latest as method 1 and the system PM as a fallback option
## Summary Follows up on notes in `AGENTS/devlogs/2026-8-10_notes-on-dependencies.md` from fresh-install testing. **Why:** The old three-tier dependency classification (Required/Recommended/Integrations) lumped genuinely essential tools in with minor single-function wrapper conveniences, so `fish-deps install` prompted to install things like `btop`, `lazygit`, or a whole terminal emulator (`kitty`/`wezterm`) right alongside `bat`/`eza`. Testing also surfaced two real bugs: the Docker context indicator in the prompt broke on every single prompt render when `docker` wasn't installed, and `ov`'s catalog entry pointed at the wrong `cargo` crate. **What:** - Split the catalog into five tiers: Required, Recommended, **Optional** (new — single-purpose wrapper conveniences: `btop`, `dust`, `duf`, `prettyping`, `go`, `lazygit`, `lazydocker`, `docker`, `yt-dlp`, `screen`), **Terminal Emulators** (new — `kitty`, `wezterm`), and Integrations. - `fish-deps install`/`sync` skip Optional and Terminal Emulator tiers by default, with new `--optional`, `--terminals`, and `--all` flags to include them, plus a one-line summary of what was skipped. - Fixed `_fish_deps_status` treating missing Integrations as critical (red) — only Required is red now. - Fixed `fish_right_prompt` calling `docker context show` with no `type -q docker` guard, unlike every other optional integration in this config — this printed a visible "Unknown command: docker" error block on every prompt when docker wasn't installed. Also hardened the `ld` wrapper with explicit docker/lazydocker presence checks. - Fixed `ov`'s catalog entry offering `cargo install ov`, which silently installs an unrelated crate (not the noborus/ov pager). `ov` now prefers `go install github.com/noborus/ov@latest` (ahead of the system PM) when `go` is available — covering distros like Debian/Ubuntu that don't package `ov` in their base repos — falling back to the system PM otherwise. Docs (`docs/manual/06-dependency-catalog.md`) updated to match; `docs/fish-config.md`/`.1` and the site content regenerate automatically via the existing CI job. ## Manual Verification Checklist - [ ] `fish-deps status` shows five sections (Required, Recommended, Optional, Terminal Emulators, Integrations) with the right tools in each - [ ] `fish-deps install` (no flags) does **not** prompt for anything in Optional or Terminal Emulators; `fish-deps install --all` does - [ ] On a machine without `docker` installed, opening a new prompt does not print any "Unknown command" error - [ ] `ld` prints a clear error (not a raw command-not-found) when `docker` or `lazydocker` is missing - [ ] With `ov` missing and `go` installed, `fish-deps install` offers `go install github.com/noborus/ov@latest` as method 1 and the system PM as a fallback option
rootiest added 1 commit 2026-08-14 20:42:45 +00:00
Reworks fish-deps' dependency classification from three tiers to five:
Required, Recommended, Optional, Terminal Emulators, and Integrations.

- Add an Optional tier for single-purpose wrapper conveniences that only
  matter if you already use that specific tool (btop, dust, duf,
  prettyping, go, lazygit, lazydocker, docker, yt-dlp, screen). Skipped by
  `fish-deps install`/`sync` by default.
- Split kitty/wezterm into their own Terminal Emulators tier, since only
  the one matching $TERM is ever relevant to a given user.
- Add --optional, --terminals, and --all flags to `install`/`sync` to
  opt back into the skipped tiers, with a summary of how many were
  skipped and which flag restores them.
- Fix `_fish_deps_status` marking missing Integrations as critical (red)
  the same as Required — only Required is red now; Recommended stays
  yellow, everything else renders as a neutral dim note.

Also fixes two bugs surfaced during dependency testing on a fresh
install:

- `fish_right_prompt` called `docker context show` on every prompt with
  no `type -q docker` guard, unlike every other optional integration in
  this config — on a system without docker this printed a visible
  "Unknown command: docker" block on every single prompt render. Added
  the missing guard, and hardened the `ld` wrapper with explicit
  docker/lazydocker presence checks.
- `ov`'s catalog entry offered `cargo install ov` as its preferred
  install method, but crates.io's `ov` is an unrelated crate, not the
  noborus/ov pager — cargo would silently install the wrong package.
  Removed the cargo path; `ov` now prefers `go install
  github.com/noborus/ov@latest` (ahead of the system PM) when go is
  available, since not all distros package `ov` in their base repos,
  and falls back to the system PM otherwise.
rootiest force-pushed feat-fish-deps-optional-tiers from 4f88a36abf to c17f6663db 2026-08-14 20:42:45 +00:00 Compare
rootiest merged commit 8ab69f53ed into main 2026-08-14 20:44:11 +00:00
rootiest deleted branch feat-fish-deps-optional-tiers 2026-08-14 20:44:11 +00:00
Sign in to join this conversation.