feat: initial fish shell configuration

- Core config layered on CachyOS base with Catppuccin Mocha theming
- Fisher plugins: fzf.fish, catppuccin, autopair, replay, puffer-fish, magic-enter, spark
- Smart CLI wrappers with fallbacks (bat, lsd, btop, dust, prettyping)
- Custom functions: git, docker, network, kitty, AI session management
- Extensive abbreviation system for keyboard-driven workflows
- Secrets/local sourcing pattern for private and machine-specific config
- README with full documentation and personalization guide
- AGPLv3+ license with copyright headers on all source files
This commit is contained in:
2026-04-26 00:59:48 -04:00
commit 4c1e7a7eb9
131 changed files with 5625 additions and 0 deletions
+59
View File
@@ -0,0 +1,59 @@
# Copyright (C) 2026 Rootiest
# SPDX-License-Identifier: AGPL-3.0-or-later
function bd-pull -d "Pull new Gitea issues into local Beads and link them"
if not set -q argv[1]; echo "Need repo owner/name"; return 1; end
if not set -q GITEA_TOKEN; echo "\$GITEA_TOKEN not set"; return 1; end
set -l REPO $argv[1]
set -l GITEA_URL "https://git.rootiest.dev"
set -l IMPORT_COUNT 0
echo (set_color blue)"📡 Checking Gitea: $REPO..."(set_color normal)
# 1. Fetch issues (using jq to get BOTH title and number)
set -l gitea_json (curl -s -H "Authorization: token $GITEA_TOKEN" "$GITEA_URL/api/v1/repos/$REPO/issues?state=all")
# 2. Iterate through issues using their index/number
for row in (echo $gitea_json | jq -r '.[] | @base64')
set -l _decode (echo $row | base64 --decode)
set -l title (echo $_decode | jq -r '.title')
set -l number (echo $_decode | jq -r '.number')
# If it doesn't have [ID] brackets, it's a "Web-Original" issue
if not string match -qr "^\[.*\]" "$title"
echo (set_color yellow)" Linking Web Issue #$number: $title"(set_color normal)
# A. Create local Bead and capture the new ID
# This captures the output of bd create to find the ID it generated
set -l bd_output (bd create --title "$title")
set -l bid (echo $bd_output | string match -r "bd-[a-z0-9]+" | head -n 1)
if test -z "$bid"
# Fallback: find the latest ID in the jsonl if regex fails
set bid (tail -n 1 .beads/issues.jsonl | jq -r '.id')
end
# B. Update the Gitea Issue Title IMMEDIATELY via API
# This prevents the Gitea Action from creating a duplicate
set -l new_title "[$bid] $title"
curl -s -X PATCH -H "Authorization: token $GITEA_TOKEN" \
-H "Content-Type: application/json" \
-d "{\"title\":\"$new_title\"}" \
"$GITEA_URL/api/v1/repos/$REPO/issues/$number" > /dev/null
set IMPORT_COUNT (math $IMPORT_COUNT + 1)
end
end
if test "$IMPORT_COUNT" -gt 0
echo (set_color green)"✅ Linked $IMPORT_COUNT issues."(set_color normal)
bd sync
# We don't even necessarily need to push now, because the titles match!
git add .beads/issues.jsonl
git commit -m "chore: sync local IDs for web issues"
git push
else
echo "⠿ No unlinked issues found."
end
end