Commit Graph

405 Commits

Author SHA1 Message Date
rootiest ec99ceb018 feat(config-settings): decode Shift-Tab as backtab 2026-06-24 00:02:50 -04:00
rootiest a422400d72 fix(config): don't create global shadow for scrollback source vars
A global __fish_scrollback_history_dir/_max_files would shadow the universal
that config-settings writes, defeating live mirror updates and stale-displaying
the value until restart. Export the default, override from the universal only
if set.
2026-06-24 00:01:57 -04:00
rootiest 2772b26704 feat(config-settings): value-row set/get backend helpers 2026-06-23 23:58:10 -04:00
rootiest 180ea9337f feat(sponge): user-extensible sensitive var names via __fish_sponge_extra_sensitive 2026-06-23 23:55:31 -04:00
rootiest 72920c04ce feat(config): fish-style scrollback vars mirrored to exported env vars 2026-06-23 23:45:19 -04:00
Gitea Actions 614c064524 chore(docs): regenerate man page, HTML docs, and wiki 2026-06-24 03:09:52 +00:00
rootiest 5ee09bf13e Merge pull request 'fix(auto-pull): respect $__fish_user_dots_path for registry location' (#65) from fix/auto-pull-user-dots-path into main
Generate documentation / build-docs (push) Successful in 35s
Reviewed-on: #65
2026-06-24 03:09:15 +00:00
rootiest 390072e919 fix(auto-pull): respect $__fish_user_dots_path for registry location
Both the auto-pull function and the PWD event handler hardcoded
$XDG_CONFIG_HOME/.user-dots/fish as the registry directory. They now
resolve $__fish_user_dots_path first, falling back to the same default,
so a custom path set via config-settings is honoured.
2026-06-23 23:07:46 -04:00
Gitea Actions cd240f4460 chore(docs): regenerate man page, HTML docs, and wiki 2026-06-23 18:28:57 +00:00
rootiest f6fd093850 Merge pull request 'feat(config-settings): rename config-toggle → config-settings; add __fish_user_dots_path UI' (#64) from feat/config-settings-rename-path-var into main
Generate documentation / build-docs (push) Successful in 30s
Offline docs drift reminder / remind (push) Successful in 11s
Reviewed-on: #64
2026-06-23 18:28:29 +00:00
rootiest 67f22c8a60 docs(config-settings): fix remaining stale config-toggle ref in draw helper description 2026-06-23 14:17:40 -04:00
rootiest 6f8fd855e4 docs(config-settings): fix stale __config_toggle_* references in helper docstrings 2026-06-23 14:16:04 -04:00
rootiest 93829285d8 docs: update fish-config.index for config-toggle → config-settings rename 2026-06-23 14:10:59 -04:00
rootiest 533ab60321 docs: rename config-toggle to config-settings in SSOT, README, and AGENTS.md 2026-06-23 14:07:48 -04:00
rootiest 43b3cf51f6 feat(config-settings): add path row event handling (Enter edit, LEFT clear, RIGHT no-op)
- Add __fish_user_dots_path as 8th entry in vars list
- Update panel_h from 14 to 16 (matches draw function's 16-line output)
- Clamp cur_row down to min(7, ...) to allow navigation to path row
- Add did_redraw flag (reset per iteration) to skip double-redraw after Enter
- Add Enter handler for row 7: erases panel, prompts for path, sets or clears
  __fish_user_dots_path universally, redraws, sets did_redraw
- Special-case RIGHT on row 7 as no-op (path is set via Enter only)
- Special-case LEFT on row 7 to clear path var via apply DEFAULT
- Add Enter key hint to --help navigation section
- Fix EXAMPLE block in __config_settings_draw docstring to include 8th arg
2026-06-23 14:02:03 -04:00
rootiest 26b90ecc72 feat(config-settings): add path row for __fish_user_dots_path in draw function 2026-06-23 12:17:55 -04:00
rootiest b506f2aa39 feat(config-settings): support arbitrary string values in apply helper 2026-06-23 12:14:35 -04:00
rootiest 7a1a213add fix(config-settings): update stale help body text after rename 2026-06-23 12:11:15 -04:00
rootiest 98a5cb4c7c feat(config-settings): rename config-toggle to config-settings; add deprecated alias 2026-06-23 12:08:21 -04:00
rootiest 93554695dc refactor(config-settings): rename __config_toggle_* helpers to __config_settings_* 2026-06-23 12:03:16 -04:00
Gitea Actions 8852ed3108 chore(docs): regenerate man page, HTML docs, and wiki 2026-06-23 15:34:43 +00:00
rootiest 47487ddcc0 Merge pull request 'feat(config): introduce __fish_user_dots_path universal variable' (#63) from feat/user-dots-path-variable into main
Generate documentation / build-docs (push) Successful in 38s
Offline docs drift reminder / remind (push) Successful in 11s
Reviewed-on: #63
2026-06-23 15:34:05 +00:00
rootiest 2a5aef2a64 feat(config): introduce __fish_user_dots_path universal variable
Allow users to customize the location of their private overlay directory
via `set -U __fish_user_dots_path /your/path`. Falls back to the previous
hardcoded default of `$XDG_CONFIG_HOME/.user-dots/fish` when unset.

Simplify the sourcing model: config.fish now sources only local.fish,
which is responsible for sourcing its own secrets.fish companion. The
redundant direct sourcing of secrets.fish from config.fish is removed.

Update docs/fish-config.md (Sections 1, 7, 10) and README.md to
document the new variable, the custom-path override pattern, and the
simplified sourcing model.
2026-06-23 03:21:02 -04:00
rootiest bdf4581b28 Merge pull request 'fix(fish-deps): show real binary path + drop hardcoded /usr/bin in paru/yay wrappers' (#62) from fish-deps-real-binary-resolution into main
Reviewed-on: #62
2026-06-22 06:18:29 +00:00
rootiest f92ac6ac37 fix(paru/yay-wrapper): resolve real binary instead of assuming /usr/bin
The generated PTY-logging wrappers hardcoded /usr/bin/{paru,yay} both for
the presence check and as the command the wrapper shells out to, breaking
on any host where the binary lives elsewhere. Resolve the real path via
__fish_real_command (which skips our own shim) and embed that. Bump the
wrapper version 5 -> 6 so existing installs regenerate.
2026-06-22 02:16:41 -04:00
rootiest cb30f19c32 feat(fish-deps): resolve real binary past our generated wrapper shims
Add __fish_real_command, which walks all PATH matches for a name and
returns the first that is NOT one of this config's generated wrappers
(identified by the "# <name>-wrapper-version:" marker; grep -I treats
real ELF binaries as no-match so only our text shims are skipped). It
never returns one of our own wrappers, so a caller embedding the result
can't build a shim that recurses into itself.

Use it for the fish-deps status "(Found at ...)" path so paru/yay show
the real binary instead of the ~/.local/bin logging shim.
2026-06-22 02:16:40 -04:00
rootiest 4a5536aeb6 feat(completions): add copilot CLI tab completions
Generated via `copilot completion fish`.
2026-06-22 00:59:25 -04:00
Gitea Actions 5103ddc43d chore(docs): regenerate man page, HTML docs, and wiki 2026-06-22 04:57:45 +00:00
rootiest 29637799f6 Merge pull request 'feat(yt-dlp): wrapper with sane defaults + fish-deps shadow-detection fix' (#61) from yt-dlp-wrapper-and-deps-fix into main
Generate documentation / build-docs (push) Successful in 33s
Reviewed-on: #61
2026-06-22 04:57:12 +00:00
rootiest ec1f00320b chore(gitignore): ignore ggshield cache directory
Exclude /.cache_ggshield, the local GitGuardian secret-scanner cache.
2026-06-22 00:55:39 -04:00
rootiest 878bc360d9 fix(fish-deps): detect tools with command -q so wrappers don't mask missing binaries
Status, install, and update resolved catalog entries with `type -q`,
which also matches wrapper functions that shadow a tool name (rg, rm,
yt-dlp). A shadowed-but-uninstalled tool was reported "installed",
skipped by `install`, and skipped by `update`. Switch these catalog-bin
probes to `command -q`/`command -s` (PATH only). PM/build-tool probes
(cargo, uv, paru, yay, ...) and the fisher check (a fish function) keep
`type -q`.
2026-06-22 00:55:30 -04:00
rootiest 6bd6436c81 feat(yt-dlp): add wrapper with embedding + SponsorBlock defaults
Add functions/yt-dlp.fish, shadowing yt-dlp to prepend sane defaults
(--sponsorblock-remove all, --embed-subs, --embed-metadata,
--embed-thumbnail). Each default is suppressed when the user already
passes that flag, its alias (--add-metadata), its negation
(--no-embed-thumbnail), the --opt=value form (--sponsorblock-remove=...),
or the global --no-sponsorblock kill. User args pass through last so an
explicit flag wins on precedence. Gated as a C1 opinionated alias;
falls back to bare `command yt-dlp` when disabled.

Register yt-dlp as a recommended (rec tier) dependency in the fish-deps
catalog and document the function (§5.13) and dependency in the SSOT
and index.
2026-06-22 00:55:12 -04:00
Gitea Actions a76e4de605 chore(docs): regenerate man page, HTML docs, and wiki 2026-06-19 06:58:05 +00:00
rootiest cf8dc8d7e1 Merge pull request 'feat(auto-pull): opt-in background fast-forward for registered repos' (#60) from feat-auto-pull-registry into main
Generate documentation / build-docs (push) Successful in 38s
Offline docs drift reminder / remind (push) Successful in 13s
Reviewed-on: #60
2026-06-19 06:57:25 +00:00
rootiest d3851fcddc docs(auto-pull): document auto-pull command, C2 behavior, and registry
Add the auto-pull function entry (5.4 Git) and index entry, a C2 component
reference row plus explanatory paragraph in fish-config.md, and update the
README C2 disable-list. (AGENTS.md C2 table, file tree, and task #12 are
tracked in the git-ignored AGENTS/ dir.)
2026-06-19 02:23:35 -04:00
rootiest 261e663e97 feat(auto-pull): opt-in background fast-forward for registered repos
Add a C2-guarded PWD handler that background fast-forwards the fish-config
repo (baseline) plus any repos in a machine-local registry. Safety is
guaranteed by _auto_pull_sync: clean tree + has-upstream + --ff-only, else
no-op. Never rebases, merges, or overwrites work.

- conf.d/auto-pull.fish: --on-variable PWD handler, throttled to fire once
  per repo entry; spawns a --no-config child to run the worker
- functions/_auto_pull_sync.fish: the ff-only worker (safe on any branch)
- functions/auto-pull.fish: add/remove/list/status registry management,
  usable even when C2 is disabled
- completions/auto-pull.fish: subcommand + registered-repo completions

Registry lives at ~/.config/.user-dots/fish/auto-pull.list (machine-local,
never committed).
2026-06-19 02:21:21 -04:00
Gitea Actions 83abb5b6c6 chore(docs): regenerate man page, HTML docs, and wiki 2026-06-19 05:58:55 +00:00
rootiest 1433844c2b Merge pull request 'feat(edit): multi-editor launcher with GUI/terminal fallbacks' (#59) from feat-edit-multi-editor-launcher into main
Generate documentation / build-docs (push) Successful in 36s
Offline docs drift reminder / remind (push) Successful in 12s
2026-06-19 05:58:20 +00:00
rootiest 034ebade0d feat(edit): stop forcing VISUAL to the terminal editor
VISUAL was hardwired to $EDITOR (nvim), so 'edit --visual' would launch a
terminal editor detached with no tty. Comment it out so --visual falls
through to the GUI fallback chain, and let users set a real GUI editor via
local.fish. Update the editor-variable docs to match.
2026-06-19 01:56:58 -04:00
rootiest 8dfbc2a9be Merge branch 'main' into feat-edit-multi-editor-launcher 2026-06-19 05:54:18 +00:00
rootiest ed8de40d46 feat(edit): replace edit wrapper with multi-editor launcher
Rewrite functions/edit.fish as a flexible launcher supporting GUI and
terminal editors with rich fallback chains, clipboard/text temp files,
new-window flags, and verbose/silent output control.

- --visual/--terminal force mode; default auto-detects via tty
- GUI chain: zed → antigravity-ide → code → kate → kwrite → gnome-text-editor → gedit
- Terminal chain: nvim → vim → micro → nano → vi
- --clipboard reuses the existing p function; --text opens a literal string
- --new maps to per-editor new-window flags (best-effort)
- C1 guard falls back to legacy bare-editor behavior when disabled

Docs: update fish-config.md function entry + C1 table, README and AGENTS C1 shadow lists.
2026-06-19 00:58:40 -04:00
Gitea Actions d87582253c chore(docs): regenerate man page, HTML docs, and wiki 2026-06-18 03:02:57 +00:00
rootiest 7079319a09 docs: fix CAUTION callout rendering and list scripts/agents-tools in structure tree
Generate documentation / build-docs (push) Successful in 32s
2026-06-17 23:02:22 -04:00
Gitea Actions 3fcc8a3ab5 chore(docs): regenerate man page, HTML docs, and wiki 2026-06-18 02:45:47 +00:00
rootiest fdd0733b3f Merge pull request 'fix(agents): chain AGENTS git hooks to global core.hooksPath' (#58) from fix-agents-hooks-chain-global into main
Generate documentation / build-docs (push) Successful in 35s
Reviewed-on: #58
2026-06-18 02:45:12 +00:00
rootiest c3e39b7a96 fix(agents): chain AGENTS git hooks to global core.hooksPath
The local core.hooksPath override set by agents-init shadowed the user's
global hooks (ggshield, Git LFS) since git honors only one hooksPath. Each
shim now execs the global/system hook of the same name after running
version-bump, so global hooks still run after version increment. Bumped the
agents-tools version marker to 2 so existing AGENTS repos refresh.
2026-06-17 22:39:18 -04:00
rootiest c7d1e642e5 fix(cat): terminate string match options to handle --- frontmatter
A file whose first lines contain a bare '---' (e.g. YAML frontmatter)
caused 'string match -qr' to parse the line as an option flag, raising
'string match: ---: unknown option'. Add '--' to end option parsing.
2026-06-17 22:14:31 -04:00
Gitea Actions 3bdc712fa9 chore(docs): regenerate man page, HTML docs, and wiki 2026-06-18 02:10:46 +00:00
rootiest b81cbd3b02 Merge pull request 'feat(agents): AGENTS/ structure versioning + plans/specs/devlogs consolidation' (#57) from feat/agents-version-tracking into main
Generate documentation / build-docs (push) Successful in 35s
Reviewed-on: #57
2026-06-18 02:10:08 +00:00
rootiest 7474760525 fix(agents-init): guard install helper against silent failures 2026-06-17 21:51:54 -04:00