fix: tricks.fish double-source and paru/yay wrapper duplication #136
No Reviewers
Labels
Clear labels
Area/CI
Area/Completions
Area/Components
Area/Config
Area/Docs
Area/Functions
Area/Integrations
Area/Prompt & Theme
Area/Scripts
Area/Tests
Compat/Breaking
Kind/Bug
Kind/Chore
Kind/Documentation
Kind/Enhancement
Kind/Feature
Kind/Performance
Kind/Refactor
Kind/Security
Kind/Testing
good first issue
help wanted
.github/workflows and repository automation
completions/ - tab-completion scripts
The opinionated-component system (C1-C6)
config.fish and conf.d/ - startup and environment
docs/manual/ and the generated manual, man page, and site
functions/ - user-facing functions and helpers
integrations/ - third-party tool wiring
themes/ and prompt appearance
scripts/ - standalone helper scripts
tests/ - the syntax lint and functional suite
Breaking change that won't be backward compatible
Something is not working
Tooling, dependencies, and housekeeping
Documentation changes
Improve existing functionality
New functionality
Makes existing behavior faster or lighter
Restructures code without changing behavior
This is security issue
Issue or pull request related to testing
Priority
Critical
1
The priority is critical
Priority
High
2
The priority is high
Priority
Low
4
The priority is low
Priority
Medium
3
The priority is medium
Reviewed
Confirmed
1
Issue has been confirmed
Reviewed
Duplicate
2
This issue or pull request already exists
Reviewed
Invalid
3
Invalid issue
Reviewed
Won't Fix
3
This issue won't be fixed
Status
Abandoned
3
Somebody has started to work on this but abandoned work
Status
Blocked
1
Something is blocking this issue or pull request
Status
Need More Info
2
Feedback is required to reproduce issue or to continue work
Well-scoped and self-contained; a good place to start
Maintainer is looking for someone to pick this up
No labels
Milestone
No items
No Milestone
Projects
Clear projects
No projects
Assignees
rootiest (Rootiest)
Clear assignees
No Assignees
Notifications
Due Date
No due date set.
Dependencies
No dependencies set.
Reference: rootiest/fish-config#136
Reference in New Issue
Block a user
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.
Addresses
AGENTS/startup-latency-JOB-BRIEF-FINDINGS.md(Job 1's out-of-scope findings). Independent of the other job branches — based onmain.1.
tricks.fishsourced twice on CachyOS (4.55ms/shell)tricks.fishruns once via the conf.d autoload, then again becauseconfig.fishre-sources it to win back over CachyOS's own distro config. The bang-bang functions, aliases, and history override need to re-run on both passes — that's the point of the second source — but the PATH/MANPAGER setup doesn't.Gates
fish_add_pathand thetype -q batprobe behind a once-per-session global. Nothing else changes; the coupling withconfig.fish's owncachyos-tricksguard is untouched (deliberately, per the findings doc — replicating that guard insidetricks.fishwould create the cross-file coupling the(status basename)convention exists to avoid).2.
paru/yaywrapper generators fight each otherTwo generators wrote the same
~/.local/bin/paru/yayfiles: the canonical version-6 generators inconf.d/paru-wrapper.fish/conf.d/yay-wrapper.fish(PTY-based, progress bars preserved, resolves the real binary via__fish_real_command), and an inferior version-1 copy inside__fish_config_sync_logging(plaintee, no PTY, hard-coded/usr/bin/paru//usr/bin/yay). Whichever ran last won, and toggling C5 logging would flip it back to version 1 every time.__fish_config_sync_loggingnow delegates entirely to the canonical generators instead of carrying a copy. One behavior change falls out of that rather than being special-cased: a wrapper is no longer generated when C2 (paru-autoexec/yay-autoexec) is disabled, even if C5 logging is on — the removed copy never checked C2, so it could reinstall a wrapper the user had explicitly turned auto-exec off for.Adds
functions/_fish_source_scoped.fish: both canonical generatorsreturnearly on several guard checks, and areturninside a sourced file exits the calling function (confirmed with a minimal repro, not assumed) — which would otherwise abort__fish_config_sync_loggingafter the firstsourceand skip whichever of paru/yay hadn't run yet. This tiny helper runssourceinside its own function-call boundary to contain that.Verification
fish -non every touched file.fish tests/run-tests.fish: 317/317 (this branch doesn't carry the header-help test suite from the other job branches).paru/yay: enable generates both v6 wrappers, disable removes both and drops the sentinel, re-enable regenerates them and clears the sentinel.