Commit Graph
277 Commits
Author SHA1 Message Date
Gitea Actions 451097d384 chore(docs): regenerate manual, man page, and component registry 2026-08-20 04:44:19 +00:00
rootiest 27f780e733 docs(manual): use cat as the token-boundary example for @@ 2026-08-20 00:38:22 -04:00
rootiest 9368a4864c fix(bindings): trigger fzf inline picker with a lookbehind @ instead of a @@ chord
Binding the raw @@ chord made a lone @ an ambiguous prefix, so fish
(with fish_sequence_key_delay_ms unset) held every typed @ indefinitely
until a disambiguating keystroke arrived, breaking things like
`ssh user@host`. Binding the single @ key instead and checking whether
the current token is already a bare @ removes the ambiguity entirely:
plain @ always self-inserts instantly, and a second consecutive @
triggers the picker in place, with no forced delimiter before you can
keep typing. Vi's normal/visual modes are left unbound, matching their
existing (no-op) @ behavior.
2026-08-20 00:38:02 -04:00
Gitea Actions 5f55438581 chore(docs): regenerate manual, man page, and component registry 2026-08-19 01:58:54 +00:00
rootiest 0ef99e4874 fix(verify-manual): use a real temp file instead of /dev/stdin for the registry round-trip test
Generate documentation / build-docs (push) Successful in 3m30s
fish 3.7 (Ubuntu 24.04's packaged version, used in CI) rejects
'source /dev/stdin' when it's backed by a pipe, with
"'/dev/stdin' is not a file" -- fish 4.8 (local dev) accepts it.
Writing the generated registry to a real temp file sources
identically across fish versions.
2026-08-18 21:55:23 -04:00
rootiest 6ef0859e43 perf(logo-svg): further optimized logo SVG image 2026-08-18 21:49:13 -04:00
rootiest f7b207aaf4 fix(verify-manual): move assertion-free check to warn_*, exclude guard infra from false-positive warning
test_c0_tags_never_combine_with_contradiction_unwarned could never fail (its
own docstring said so) yet inflated the test_* pass count. Rename it to
warn_c0_tags_never_combine_with_contradiction, matching the file's existing
warn_* convention, and call it explicitly from main() alongside the other
three warn_* checks.

warn_functions_without_component also permanently false-positived on
functions/__fish_config_op_enabled.fish: the file's own function signature
and EXAMPLE prose contain the literal guard name, tripping the "calls the
guard" substring check against itself. Exclude the guard's own supporting
infrastructure files (__fish_config_op_enabled.fish,
__fish_config_op_cascade.fish, __fish_config_op_registry_lookup.fish) by
name -- an EXAMPLE-section-only exclusion wouldn't have worked here since
the false match is the function's own `function __fish_config_op_enabled`
definition line, not just its EXAMPLE block.
2026-08-18 18:12:57 -04:00
rootiest 1cb6f37b5b fix(registry): quote keys, dedupe tags, and document sourcing order; CI commits regenerated registry
- Quote both keys and values in the generated __fish_config_op_registry.fish
  keys array so a future identity/tag containing a glob-special character
  (*, ?, [) can't be silently dropped by fish's set, desyncing the
  positionally-paired keys/values arrays.
- Deduplicate the tag list per site in build_registry() so an identity
  collision across sources (e.g. auto-pull tagged autoexec/sync in both
  functions/auto-pull.fish and conf.d/auto-pull.fish) no longer produces a
  duplicated tag in the committed registry.
- Add a comment to the generated file's header noting it must sort first
  among conf.d/*.fish guard-callers, since that ordering is currently
  implicit in the filename rather than stated anywhere.
- CI's auto-commit step now also stages conf.d/__fish_config_op_registry.fish
  alongside the docs it already regenerates, so a # COMPONENT header change
  pushed without a manual __fish_config_op_registry_rebuild self-heals
  instead of silently drifting from what CI just regenerated.
2026-08-18 18:12:49 -04:00
rootiest a8468f3402 docs(manual): document sub-categories in customization, reference index, and troubleshooting
Sub-categories were previously undocumented outside README and the
per-category reference pages. Add a paragraph to 07-customization.md (the
canonical opinionated-components page) explaining the sub-category cascade,
a short note to the 08-components-reference index pointing readers at each
category's sub-category list, and a troubleshooting note that
__fish_config_op_<category>_<subcategory> variables follow the same
check/reset pattern as category variables.
2026-08-18 18:12:41 -04:00
rootiest 040c98c0a7 fix(config-settings,docs): address final whole-branch review findings
Bundled fix wave for six findings from the sub-category-granularity
whole-branch review:

- config-settings: reset in_subcat on Tab/Shift-Tab so up/down keep
  routing to cur_row instead of freezing on the Sponge/Paths pages
  after a drill-down
- verify-manual: _parsed_components() now delegates to
  generate_component_registry.collect_components() instead of a
  lossy dict.update() merge, closing a taxonomy-check blind spot on
  identity collisions
- verify-manual: add test_committed_registry_matches_headers to
  catch the committed registry drifting from current # COMPONENT
  headers
- build-docs workflow: trigger on conf.d/** and config.fish edits,
  not just functions/**
- __config_settings_draw_subcat: show (Universal)/(Session) in the
  drill-down title so the persistence scope is visible before toggling
- __config_settings_draw / config-settings: mention the Enter
  sub-category drill-down in the on-screen hint and --help text
- generate_component_registry: send the "wrote ..." progress line to
  stderr so it no longer corrupts --concat's stdout output
2026-08-18 16:46:46 -04:00
rootiest 0554a3dddc fix(docs): tighten taxonomy slug regex to exclude the Sub-categories heading 2026-08-17 21:04:06 -04:00
rootiest fbb6b6e740 feat(docs): validate # COMPONENT tags against the sub-category taxonomy 2026-08-17 21:02:11 -04:00
rootiest 2cf61b0590 docs: author the sub-category taxonomy and C0 explanation 2026-08-17 20:55:36 -04:00
rootiest d748289c11 feat(docs): regenerate component registry before building the manual 2026-08-17 20:49:42 -04:00
rootiest 9d6923f225 fix(docs): merge, not overwrite, COMPONENT lines on identity collision
collect_components() used dict.update(), which let conf.d silently
overwrite functions/ (or vice versa) when the same bare identity
appears in both, e.g. functions/auto-pull.fish and
conf.d/auto-pull.fish. The runtime guard can only ever look up the
bare status current-function/basename string, so both call sites
genuinely share one identity and their raw COMPONENT lines must be
concatenated, not replaced.
2026-08-17 20:42:04 -04:00
rootiest c0628dbd4c feat(docs): add component registry generator 2026-08-17 20:34:48 -04:00
rootiest 31b47ddfc5 feat(docs): parse # COMPONENT headers in manualtools 2026-08-17 20:29:02 -04:00
rootiest 04a02d089f style(docs-site): size the Gitea header icon up to 1.5rem
Generate documentation / build-docs (push) Successful in 3m26s
At the default 1em (16px) it read as noticeably smaller than the
other header controls, especially next to the logo. Bumped to a fixed
1.5rem — well within the nav bar's existing content height, so the
header itself doesn't grow.
2026-08-17 16:18:02 -04:00
rootiest f865ad766d perf(docs-site): minify header logo SVG
logo.svg was 56KB of unminified, high-precision path data with no
embedded raster. Running it through SVGO (default preset, multipass)
cuts it to ~20KB with no visual difference.

perf(docs-site): further minify header logo SVG. Cut to ~8.9KB with no visual difference.
2026-08-17 16:03:05 -04:00
rootiest f32e0d0ce5 feat(docs-site): add starlight-plugin-icons, use real Gitea logo in header
The header social link used Starlight's generic `code-branch` icon.
Wires up starlight-plugin-icons + UnoCSS (Iconify) and overrides
SocialIcons to render `pajamas:gitea` for the Gitea link instead, while
falling back to Starlight's default icon set for anything else. Sidebar
and codeblock icon support are enabled but unused for now.
2026-08-17 15:30:42 -04:00
Gitea Actions 8a937124d3 chore(docs): regenerate manual and man page 2026-08-17 19:12:59 +00:00
rootiest 22dcd31c05 docs(fisher-plugins): clarify sponge's history-purge security model, link plugin repos
Explains that a matched command is actively deleted from history and
force-saved within about one prompt cycle by default, not deferred to
shell exit, and calls out sponge_purge_only_on_exit as the setting that
would change that (a killed/crashed session never triggers fish_exit).
Also hyperlinks the Fisher-managed and bundled plugin names to their
upstream repos on the Starlight site.
2026-08-17 15:06:19 -04:00
Gitea Actions cbce46b63f chore(docs): regenerate manual and man page 2026-08-14 20:47:11 +00:00
rootiest c17f6663db feat(deps): add Optional/Terminal Emulator tiers, fix docker prompt hang and ov install path
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.
2026-08-14 16:42:37 -04:00
Gitea Actions 20adb8f75c chore(docs): regenerate manual and man page 2026-08-14 20:05:59 +00:00
rootiest 96df21444b feat(docs): publish llms.txt for AI agent consumption
Add the starlight-llms-txt plugin so the docs build emits llms.txt,
llms-full.txt, and llms-small.txt alongside the regular pages, making
the manual queryable by MCP-compatible agents without depending on a
third-party indexing service.

Also bump js-yaml, nanoid, and sharp in docs/site to clear three
high-severity advisories (quadratic YAML omap parsing, a zero-size
nanoid loop, and inherited libvips CVEs) flagged by npm audit while
touching the same lockfile.
2026-08-14 15:50:21 -04:00
Gitea Actions 7875b83a94 chore(docs): regenerate manual and man page 2026-08-14 19:28:36 +00:00
Gitea Actions fc420fad72 chore(docs): regenerate manual and man page 2026-08-06 20:32:45 +00:00
rootiest 4ff120cc5d docs(manual): format plugins and installation pages 2026-08-06 16:28:13 -04:00
Gitea Actions 7c99b475e3 chore(docs): regenerate manual and man page 2026-08-06 20:14:19 +00:00
rootiest 0ff6be3f81 Merge branch 'main' into feature/dynamic-abbreviations-docs 2026-08-06 20:10:18 +00:00
rootiest e76668d3b1 docs: fix abbreviations file ordering and capitalization for tests 2026-08-06 16:07:08 -04:00
rootiest 204b13781d docs: use indented text tables for abbreviations and strip CardGrid from concat 2026-08-06 16:00:48 -04:00
Gitea Actions 0b9cf5a928 chore(docs): regenerate manual and man page 2026-08-06 19:48:00 +00:00
rootiest 82d761b026 docs: restructure abbreviations into individual pages for sidebar 2026-08-06 15:38:15 -04:00
rootiest 742fd7941d docs: use markdown tables for abbreviations
Generates actual markdown tables instead of indented text blocks to ensure MDX/Starlight correctly renders abbreviations.
2026-08-06 15:04:06 -04:00
rootiest 674a50ea05 feat(jobrunner): add named background job manager backed by GNU screen
Adds jobrunner (short alias jr) for running, listing, inspecting,
re-attaching to, and terminating detached background tasks. Unlike bkg
and detach, which discard output, a jobrunner job keeps a live terminal
that survives closing the shell and can be restored later with attach.

Includes the __jobrunner_sessions parser shared by the function and its
completions, dynamic job-name completions, and screen in the fish-deps
catalog.
2026-08-02 04:40:07 -04:00
Gitea Actions a2d52e1ec2 chore(docs): regenerate manual and man page 2026-07-28 07:37:49 +00:00
rootiest 2d84bcdf7e docs(bindings): document Ctrl+Right autosuggestion behavior 2026-07-28 03:34:02 -04:00
Gitea Actions 8b0b5ee85a chore(docs): regenerate manual and man page 2026-07-28 07:14:10 +00:00
rootiest 5c54ede483 refactor(deps): demote zoxide to recommended tier 2026-07-28 03:09:08 -04:00
rootiest f9086bd2ca ci(build-docs): fix baseless non-critical warnings in build log
Generate documentation / build-docs (push) Successful in 5m27s
- Eliminate the warning about the generic 404 page being replaced, it
was intentional.
- Add a flag to the cloudflare deploy task to approve pushes from dirty
git repos, it was intentional for the dynamic build.
2026-07-28 00:20:16 -04:00
Gitea Actions f9dfc4ca4c chore(docs): regenerate manual and man page 2026-07-28 04:02:20 +00:00
rootiest 429c407548 chore(docs): rebuild config-help artifacts from SSoT 2026-07-27 23:58:42 -04:00
rootiest 2fb8e3718b docs(home): add button for components alongside functions button 2026-07-27 23:58:10 -04:00
rootiest 11097e32de docs(site): restore Categories table and fix markdown table syntax 2026-07-27 23:47:40 -04:00
Gitea Actions 9d1acf0fb3 chore(docs): regenerate manual and man page 2026-07-28 03:31:21 +00:00
rootiest 1972ea5bb9 docs(site): improve UI, add catppuccin theme, fix MDX bugs 2026-07-27 23:27:09 -04:00
Gitea Actions 2b9b8e495c chore(docs): regenerate manual and man page 2026-07-28 01:37:54 +00:00
Gitea Actions 7dca813556 chore(docs): regenerate manual and man page 2026-07-28 00:55:44 +00:00