@sebastienrousseau/dotfiles 0.2.502 → 0.2.504
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +109 -9
- package/LICENSE +21 -1283
- package/README.md +6 -4
- package/docs/CONFIG_STRATEGY.md +124 -0
- package/docs/COPYRIGHT +1 -1
- package/docs/GOVERNANCE.md +98 -0
- package/docs/MAINTAINERS.md +41 -0
- package/docs/OPENCODE.md +127 -0
- package/docs/README.md +2 -0
- package/docs/STRUCTURE.md +102 -0
- package/docs/adr/ADR-011-nushell-tier3-keep.md +2 -2
- package/docs/architecture/AI_COST_OPTIMIZATION.md +143 -0
- package/docs/architecture/REPO_LAYOUT.md +8 -8
- package/docs/archive/MILESTONE_v0.2.493.md +1 -1
- package/docs/index.md +2 -2
- package/docs/interop/POWERSHELL.md +1 -1
- package/docs/manual/00-introduction.md +1 -1
- package/docs/manual/01-concepts/02-trust-model.md +1 -1
- package/docs/manual/03-reference/02-config-files.md +2 -2
- package/docs/manual/_toc.yml +1 -1
- package/docs/manual/command-index.md +72 -59
- package/docs/operations/CI_COMPOSITES.md +2 -2
- package/docs/operations/COMPLETIONS.md +2 -2
- package/docs/operations/COVERAGE.md +5 -5
- package/docs/operations/HARD_AUDIT_2026.md +11 -11
- package/docs/operations/MAINTENANCE.md +3 -3
- package/docs/operations/MANIFEST.md +127 -0
- package/docs/operations/RELEASE_PIPELINE.md +130 -0
- package/docs/operations/RFC_v0_2_503_reorganization.md +280 -0
- package/docs/operations/ROADMAP_2026.md +6 -6
- package/docs/operations/ROADMAP_V0_2_503.md +134 -0
- package/docs/operations/TESTING.md +17 -0
- package/docs/operations/TRACEABILITY.md +6 -3
- package/docs/operations/VERSION_SYNC.md +4 -4
- package/docs/reference/POWERSHELL_PARITY.md +8 -7
- package/docs/schema/dot-env-v1.json +110 -0
- package/docs/security/CI_EGRESS_ALLOWLIST.md +1 -1
- package/docs/security/CI_PINNING.md +17 -9
- package/docs/security/DEPS_DEV_EXCEPTIONS.md +2 -2
- package/docs/security/FUZZING.md +114 -0
- package/docs/security/INSTALL_VERIFICATION.md +2 -2
- package/docs/security/POLICY_RELEASES.md +2 -2
- package/docs/security/SCORECARD.md +58 -3
- package/docs/security/SHELL_EXEMPTIONS.md +4 -4
- package/docs/security/VERIFY_RELEASE.md +201 -0
- package/install.sh +118 -5
- package/package.json +1 -1
- package/scripts/README.md +123 -0
- package/scripts/ci/check-copyright-headers.sh +4 -93
- package/scripts/ci/check-shell-preamble.sh +4 -103
- package/scripts/ci/guard-gitleaks-checkout.sh +4 -54
- package/scripts/diagnostics/a2a-conformance.sh +4 -4
- package/scripts/diagnostics/alias-governance.sh +1 -1
- package/scripts/diagnostics/aliases-cheatsheet.sh +2 -2
- package/scripts/diagnostics/benchmark.sh +5 -5
- package/scripts/diagnostics/conflicts.sh +2 -2
- package/scripts/diagnostics/doctor-unified.sh +3 -3
- package/scripts/diagnostics/doctor.sh +10 -10
- package/scripts/diagnostics/drift-dashboard.sh +2 -2
- package/scripts/diagnostics/health.sh +4 -4
- package/scripts/diagnostics/history-analysis.sh +2 -2
- package/scripts/diagnostics/mcp-doctor.sh +10 -7
- package/scripts/diagnostics/perf.sh +5 -5
- package/scripts/diagnostics/scorecard.sh +4 -4
- package/scripts/diagnostics/security-score.sh +25 -6
- package/scripts/diagnostics/smoke-test.sh +2 -2
- package/scripts/diagnostics/snapshot.sh +2 -2
- package/scripts/diagnostics/verify.sh +4 -4
- package/scripts/diagnostics/version-locks.sh +13 -3
- package/scripts/diagnostics/workstation-attestation.sh +14 -14
- package/scripts/dot/commands/agent.sh +8 -0
- package/scripts/dot/commands/agents.sh +14 -4
- package/scripts/dot/commands/ai.sh +156 -37
- package/scripts/dot/commands/appearance.sh +2 -2
- package/scripts/dot/commands/core.sh +2 -2
- package/scripts/dot/commands/diagnostics.sh +5 -5
- package/scripts/dot/commands/env-emit.sh +202 -0
- package/scripts/dot/commands/fleet.sh +22 -16
- package/scripts/dot/commands/init.sh +4 -4
- package/scripts/dot/commands/lint.sh +9 -4
- package/scripts/dot/commands/manual.sh +3 -3
- package/scripts/dot/commands/meta.sh +12 -6
- package/scripts/dot/commands/patterns.sh +2 -2
- package/scripts/dot/commands/registry.sh +4 -4
- package/scripts/dot/commands/restore.sh +4 -4
- package/scripts/dot/commands/secrets.sh +4 -3
- package/scripts/dot/commands/security.sh +2 -2
- package/scripts/dot/commands/tools.sh +13 -3
- package/scripts/dot/powershell/Dot.psm1 +199 -0
- package/scripts/fonts/install-nerd-fonts.sh +2 -2
- package/scripts/git-hooks/pre-commit-audit.sh +3 -3
- package/scripts/git-hooks/pre-push +13 -0
- package/scripts/ops/ai-setup.sh +1 -1
- package/scripts/ops/bundle.sh +3 -3
- package/scripts/ops/chaos.sh +2 -2
- package/scripts/ops/chezmoi-apply.sh +12 -6
- package/scripts/ops/heal.sh +4 -4
- package/scripts/ops/post-apply-repair.sh +2 -2
- package/scripts/ops/prewarm.sh +2 -2
- package/scripts/ops/release.sh +4 -4
- package/scripts/ops/rollback.sh +4 -4
- package/scripts/ops/setup.sh +2 -2
- package/scripts/qa/check-version-consistency.sh +123 -0
- package/scripts/qa/coverage-baseline.sh +1 -1
- package/scripts/qa/docs-coverage.sh +2 -2
- package/scripts/qa/powershell-contract.ps1 +1 -1
- package/scripts/qa/scorecard-snapshot.sh +127 -0
- package/scripts/security/backup.sh +2 -2
- package/scripts/security/dns-doh.sh +4 -4
- package/scripts/security/encryption-check.sh +4 -4
- package/scripts/security/enforce-policies.sh +2 -2
- package/scripts/security/firewall.sh +4 -4
- package/scripts/security/lock-screen.sh +4 -4
- package/scripts/security/manage-secrets.sh +2 -2
- package/scripts/security/ssh-cert.sh +2 -2
- package/scripts/security/telemetry-kill.sh +4 -4
- package/scripts/security/usb-safety.sh +4 -4
- package/scripts/theme/extract-heic-frames.sh +114 -0
- package/scripts/theme/rebuild-themes.sh +31 -2
- package/scripts/theme/switch.sh +13 -6
- package/scripts/theme/wallpaper-sync.sh +297 -93
- package/scripts/tuning/linux.sh +2 -2
- package/scripts/tuning/macos.sh +2 -2
- package/scripts/version-sync.sh +74 -10
- package/dot_config/.module-manifest.json +0 -69
- package/dot_config/ai/identity.md +0 -23
- package/dot_config/ai/patterns/architect.md +0 -16
- package/dot_config/ai/patterns/hardener.md +0 -15
- package/dot_config/ai/patterns/refactor.md +0 -15
- package/dot_config/aider/aider.conf.yml +0 -32
- package/dot_config/alacritty/alacritty.toml.tmpl +0 -55
- package/dot_config/ansible/ansible.cfg +0 -11
- package/dot_config/atuin/config.toml.tmpl +0 -47
- package/dot_config/bat/config +0 -23
- package/dot_config/brave-flags.conf.tmpl +0 -7
- package/dot_config/btop/btop.conf +0 -16
- package/dot_config/btop/themes/tokyonight.theme +0 -34
- package/dot_config/bun/bunfig.toml.tmpl +0 -33
- package/dot_config/claude/mcp_servers.json +0 -20
- package/dot_config/containers/containers.conf +0 -14
- package/dot_config/curl/dot_curlrc +0 -18
- package/dot_config/dlv/config.yml +0 -39
- package/dot_config/docker/config.json +0 -15
- package/dot_config/dotfiles/agent-card.json +0 -29
- package/dot_config/dotfiles/agent-profiles.json +0 -92
- package/dot_config/dotfiles/boot/README.md +0 -13
- package/dot_config/dotfiles/grub/README.md +0 -13
- package/dot_config/dotfiles/lock/README.md +0 -13
- package/dot_config/dotfiles/mcp-lock.json +0 -33
- package/dot_config/dotfiles/mcp-policy.json +0 -52
- package/dot_config/dotfiles/mcp-registry.json +0 -47
- package/dot_config/dotfiles/model-registry.json +0 -20
- package/dot_config/dotfiles/policy-bundles.json +0 -38
- package/dot_config/dotfiles/prompt-registry.json +0 -16
- package/dot_config/dotfiles/versions.env +0 -18
- package/dot_config/duf/duf.conf +0 -6
- package/dot_config/duti/defaults.duti +0 -5
- package/dot_config/emoji/emoji.txt +0 -34
- package/dot_config/environment.d/50-ssh-agent.conf +0 -2
- package/dot_config/environment.d/90-wayland.conf +0 -19
- package/dot_config/fastfetch/config.jsonc +0 -28
- package/dot_config/firefox/user.js.tmpl +0 -58
- package/dot_config/fish/completions/dot-theme-sync.fish.tmpl +0 -9
- package/dot_config/fish/completions/dot.fish.tmpl +0 -115
- package/dot_config/fish/conf.d/000-perf-cache.fish +0 -56
- package/dot_config/fish/conf.d/aliases.fish.tmpl +0 -77
- package/dot_config/fish/conf.d/direnv.fish +0 -4
- package/dot_config/fish/conf.d/env.fish.tmpl +0 -48
- package/dot_config/fish/conf.d/functions.fish.tmpl +0 -22
- package/dot_config/fish/conf.d/init.fish.tmpl +0 -172
- package/dot_config/fish/conf.d/mise-activate.fish +0 -5
- package/dot_config/fish/config.fish.tmpl +0 -44
- package/dot_config/fish/fish_plugins +0 -1
- package/dot_config/fish/functions/_.fish +0 -3
- package/dot_config/fish/functions/_cached_eval.fish +0 -131
- package/dot_config/fish/functions/_cached_eval_clear.fish +0 -17
- package/dot_config/fish/functions/als.fish +0 -46
- package/dot_config/fish/functions/bg-upgrade.fish +0 -7
- package/dot_config/fish/functions/c.fish +0 -3
- package/dot_config/fish/functions/cat.fish +0 -9
- package/dot_config/fish/functions/d.fish +0 -7
- package/dot_config/fish/functions/dot.fish +0 -34
- package/dot_config/fish/functions/h.fish +0 -3
- package/dot_config/fish/functions/l.fish +0 -7
- package/dot_config/fish/functions/la.fish +0 -7
- package/dot_config/fish/functions/ll.fish +0 -7
- package/dot_config/fish/functions/log_error.fish +0 -13
- package/dot_config/fish/functions/log_info.fish +0 -13
- package/dot_config/fish/functions/lr.fish +0 -7
- package/dot_config/fish/functions/lra.fish +0 -7
- package/dot_config/fish/functions/ls.fish +0 -7
- package/dot_config/fish/functions/lt.fish +0 -7
- package/dot_config/fish/functions/lta.fish +0 -7
- package/dot_config/fish/functions/notify-run.fish +0 -11
- package/dot_config/fish/functions/q.fish +0 -3
- package/dot_config/fish/functions/silent-run.fish +0 -7
- package/dot_config/fish/functions/yy.fish +0 -8
- package/dot_config/flatpak/flatpak.list +0 -4
- package/dot_config/fontconfig/fonts.conf.tmpl +0 -57
- package/dot_config/foot/foot.ini.tmpl +0 -33
- package/dot_config/fuzzel/fuzzel.ini.tmpl +0 -18
- package/dot_config/fzf/fzf.zsh +0 -48
- package/dot_config/gem/gemrc +0 -9
- package/dot_config/gh/config.yml +0 -12
- package/dot_config/ghostty/config.tmpl +0 -165
- package/dot_config/git/allowed_signers.tmpl +0 -18
- package/dot_config/git/attributes +0 -12
- package/dot_config/git/commit-template +0 -10
- package/dot_config/git/hooks/executable_commit-msg +0 -146
- package/dot_config/git/ignore +0 -27
- package/dot_config/gnupg/gpg-agent.conf +0 -11
- package/dot_config/go/golangci.yml +0 -118
- package/dot_config/go/gopls.json +0 -30
- package/dot_config/goose/config.yaml +0 -29
- package/dot_config/gtk-3.0/gtk.css.tmpl +0 -184
- package/dot_config/gtk-3.0/settings.ini.tmpl +0 -27
- package/dot_config/gtk-4.0/gtk.css.tmpl +0 -252
- package/dot_config/gtk-4.0/settings.ini.tmpl +0 -18
- package/dot_config/htop/htoprc +0 -20
- package/dot_config/inputrc +0 -2
- package/dot_config/ipython/profile_default/ipython_config.py +0 -19
- package/dot_config/just/justfile +0 -122
- package/dot_config/k9s/config.yaml +0 -65
- package/dot_config/k9s/skins/catppuccin-mocha.yaml +0 -116
- package/dot_config/kanshi/config.tmpl +0 -22
- package/dot_config/karabiner/karabiner.json +0 -14
- package/dot_config/kitty/kitty.conf.tmpl +0 -53
- package/dot_config/lazydocker/config.yml +0 -186
- package/dot_config/lazygit/config.yml +0 -35
- package/dot_config/mako/config +0 -47
- package/dot_config/mas/masapps.txt +0 -5
- package/dot_config/micro/settings.json +0 -3
- package/dot_config/mimeapps.list +0 -77
- package/dot_config/minikube/config.json +0 -13
- package/dot_config/mise/config.toml +0 -99
- package/dot_config/mongosh/mongoshrc.js +0 -68
- package/dot_config/mpv/input.conf +0 -47
- package/dot_config/mpv/mpv.conf +0 -47
- package/dot_config/mycli/myclirc +0 -67
- package/dot_config/nano/nanorc +0 -28
- package/dot_config/ncdu/config +0 -12
- package/dot_config/niri/config.kdl.tmpl +0 -327
- package/dot_config/nushell/aliases.nu +0 -18
- package/dot_config/nushell/cached_eval.nu +0 -80
- package/dot_config/nushell/completions.nu.tmpl +0 -52
- package/dot_config/nushell/config.nu.tmpl +0 -86
- package/dot_config/nushell/env.nu.tmpl +0 -102
- package/dot_config/nushell/functions.nu.tmpl +0 -17
- package/dot_config/nvim/init.lua +0 -18
- package/dot_config/nvim/lazy-lock.json +0 -58
- package/dot_config/nvim/lua/config/autocmds.lua +0 -107
- package/dot_config/nvim/lua/config/keymaps.lua +0 -92
- package/dot_config/nvim/lua/config/lazy.lua +0 -44
- package/dot_config/nvim/lua/config/options.lua +0 -49
- package/dot_config/nvim/lua/plugins/ai.lua +0 -75
- package/dot_config/nvim/lua/plugins/coding.lua +0 -216
- package/dot_config/nvim/lua/plugins/completion.lua +0 -60
- package/dot_config/nvim/lua/plugins/dap.lua +0 -412
- package/dot_config/nvim/lua/plugins/editor.lua +0 -55
- package/dot_config/nvim/lua/plugins/git.lua +0 -10
- package/dot_config/nvim/lua/plugins/lsp.lua +0 -156
- package/dot_config/nvim/lua/plugins/markdown.lua +0 -18
- package/dot_config/nvim/lua/plugins/rust.lua +0 -34
- package/dot_config/nvim/lua/plugins/sessions.lua +0 -33
- package/dot_config/nvim/lua/plugins/ui.lua +0 -509
- package/dot_config/paru/paru.conf +0 -10
- package/dot_config/pip/pip.conf.tmpl +0 -32
- package/dot_config/powershell/Microsoft.PowerShell_profile.ps1.tmpl +0 -81
- package/dot_config/pueue/pueue.yml +0 -34
- package/dot_config/pypoetry/config.toml +0 -6
- package/dot_config/pyrightconfig.json +0 -5
- package/dot_config/raycast/README.md +0 -13
- package/dot_config/redis/redisclirc +0 -41
- package/dot_config/ripgrep/ripgreprc +0 -21
- package/dot_config/shell/00-core-paths.sh.tmpl +0 -141
- package/dot_config/shell/05-core-safety.sh +0 -48
- package/dot_config/shell/10-secrets.sh +0 -41
- package/dot_config/shell/40-fzf-defaults.sh.tmpl +0 -17
- package/dot_config/shell/40-ls-colors.sh +0 -49
- package/dot_config/shell/50-logic-functions-core.sh.tmpl +0 -11
- package/dot_config/shell/50-logic-functions.sh.tmpl +0 -11
- package/dot_config/shell/51-logic-functions-extra.sh.tmpl +0 -65
- package/dot_config/shell/90-ux-aliases.sh.tmpl +0 -121
- package/dot_config/shell/91-ux-aliases-lazy.sh.tmpl +0 -55
- package/dot_config/shell/Brewfile +0 -207
- package/dot_config/shell/Brewfile.cask +0 -92
- package/dot_config/shell/Brewfile.cli +0 -127
- package/dot_config/shell/README.md +0 -284
- package/dot_config/shell/als_data.txt.tmpl +0 -65
- package/dot_config/shell/custom/auto_ls.zsh +0 -20
- package/dot_config/shell/custom/context_suggest.zsh +0 -68
- package/dot_config/shell/custom/error_analysis.zsh +0 -45
- package/dot_config/sops/dot_sops.yaml +0 -23
- package/dot_config/starship.toml.tmpl +0 -202
- package/dot_config/swaylock/config +0 -43
- package/dot_config/systemd/user/dotfiles-maintenance.service +0 -8
- package/dot_config/systemd/user/dotfiles-maintenance.timer +0 -11
- package/dot_config/systemd/user/pueued.service +0 -12
- package/dot_config/systemd/user/ssh-agent.service +0 -12
- package/dot_config/task/Taskfile.yml +0 -86
- package/dot_config/tflint/tflint.hcl +0 -9
- package/dot_config/tmux/tmux.conf.tmpl +0 -223
- package/dot_config/topgrade.toml.tmpl +0 -54
- package/dot_config/user-dirs.dirs +0 -10
- package/dot_config/vscode/extensions.txt +0 -11
- package/dot_config/vscode/settings.json.tmpl +0 -82
- package/dot_config/waybar/config.jsonc.tmpl +0 -90
- package/dot_config/waybar/style.css.tmpl +0 -211
- package/dot_config/wezterm/wezterm.lua.tmpl +0 -64
- package/dot_config/wget/wgetrc +0 -12
- package/dot_config/xdg-desktop-portal/niri-portals.conf +0 -5
- package/dot_config/yarn/yarnrc.yml +0 -36
- package/dot_config/yazi/keymap.toml +0 -67
- package/dot_config/yazi/theme.toml +0 -102
- package/dot_config/yazi/yazi.toml +0 -40
- package/dot_config/zathura/zathurarc +0 -52
- package/dot_config/zellij/config.kdl.tmpl +0 -79
- package/dot_config/zsh/dot_zprofile +0 -7
- package/dot_config/zsh/dot_zshenv +0 -5
- package/dot_config/zsh/dot_zshrc.tmpl +0 -688
- package/dot_config/zsh/rc.d/00-alias-shims.zsh +0 -99
- package/dot_config/zsh/rc.d/05-ssh-agent.zsh +0 -18
- package/dot_config/zsh/rc.d/10-env.zsh.tmpl +0 -28
- package/dot_config/zsh/rc.d/20-zinit.zsh +0 -65
- package/dot_config/zsh/rc.d/30-options.zsh.tmpl +0 -214
- package/dot_config/zsh/rc.d/40-bell.zsh +0 -20
- package/dot_config/zsh/rc.d/50-login-fortune.zsh +0 -9
- package/dot_config/zsh/rc.d/99-alias-wrapper.zsh +0 -32
- package/dot_local/bin/executable_ai-update +0 -195
- package/dot_local/bin/executable_ai_core +0 -152
- package/dot_local/bin/executable_antigravity +0 -11
- package/dot_local/bin/executable_b64 +0 -84
- package/dot_local/bin/executable_bm +0 -79
- package/dot_local/bin/executable_cb +0 -39
- package/dot_local/bin/executable_dot +0 -636
- package/dot_local/bin/executable_dot-ai +0 -36
- package/dot_local/bin/executable_dot-bootstrap +0 -76
- package/dot_local/bin/executable_dot-launch-or-focus +0 -52
- package/dot_local/bin/executable_dot-load-benchmark +0 -31
- package/dot_local/bin/executable_dot-load-benchmark-pty +0 -77
- package/dot_local/bin/executable_dot-theme-sync +0 -952
- package/dot_local/bin/executable_dot_completion +0 -57
- package/dot_local/bin/executable_dtags +0 -28
- package/dot_local/bin/executable_epoch +0 -67
- package/dot_local/bin/executable_extract +0 -41
- package/dot_local/bin/executable_gbd +0 -52
- package/dot_local/bin/executable_gd +0 -42
- package/dot_local/bin/executable_git-ai-commit +0 -175
- package/dot_local/bin/executable_git-ai-diff +0 -169
- package/dot_local/bin/executable_gl +0 -101
- package/dot_local/bin/executable_hash +0 -161
- package/dot_local/bin/executable_hashsum +0 -160
- package/dot_local/bin/executable_hex +0 -115
- package/dot_local/bin/executable_jsonv +0 -78
- package/dot_local/bin/executable_jwt +0 -94
- package/dot_local/bin/executable_kill-port +0 -75
- package/dot_local/bin/executable_lorem +0 -118
- package/dot_local/bin/executable_mkscript +0 -35
- package/dot_local/bin/executable_monitor +0 -56
- package/dot_local/bin/executable_myip +0 -51
- package/dot_local/bin/executable_notify +0 -24
- package/dot_local/bin/executable_open +0 -38
- package/dot_local/bin/executable_pw +0 -27
- package/dot_local/bin/executable_rec-start +0 -46
- package/dot_local/bin/executable_rec-stop +0 -35
- package/dot_local/bin/executable_regex +0 -132
- package/dot_local/bin/executable_start-niri +0 -8
- package/dot_local/bin/executable_tmux-sessionizer +0 -314
- package/dot_local/bin/executable_tour +0 -177
- package/dot_local/bin/executable_up +0 -23
- package/dot_local/bin/executable_update +0 -142
- package/dot_local/bin/executable_uuid +0 -87
- package/dot_local/bin/executable_win +0 -32
- package/dot_local/bin/executable_yamlv +0 -57
- package/dot_local/share/bash-completion/completions/dot +0 -72
- package/dot_local/share/icons/hicolor/128x128/apps/rousseau.png +0 -0
- package/dot_local/share/icons/hicolor/16x16/apps/rousseau.png +0 -0
- package/dot_local/share/icons/hicolor/24x24/apps/rousseau.png +0 -0
- package/dot_local/share/icons/hicolor/256x256/apps/rousseau.png +0 -0
- package/dot_local/share/icons/hicolor/32x32/apps/rousseau.png +0 -0
- package/dot_local/share/icons/hicolor/48x48/apps/rousseau.png +0 -0
- package/dot_local/share/icons/hicolor/512x512/apps/rousseau.png +0 -0
- package/dot_local/share/icons/hicolor/64x64/apps/rousseau.png +0 -0
- package/dot_local/share/icons/hicolor/96x96/apps/rousseau.png +0 -0
- package/dot_local/share/icons/hicolor/scalable/apps/rousseau.png +0 -0
- package/dot_local/share/man/man1/dot.1 +0 -149
- package/dot_local/share/mise/plugins/kiro-cli/bin/executable_download +0 -64
- package/dot_local/share/mise/plugins/kiro-cli/bin/executable_install +0 -18
- package/dot_local/share/mise/plugins/kiro-cli/bin/executable_list-all +0 -13
- package/dot_local/share/wayland-sessions/niri.desktop.tmpl +0 -6
- package/dot_local/share/zsh/completions/.keep +0 -0
- package/dot_local/share/zsh/completions/_dot +0 -287
- package/scripts/ci/check-dangerous-chmod.sh +0 -19
- package/scripts/ci/check-deps-dev.sh +0 -236
- package/scripts/ci/check-insecure-tls.sh +0 -61
- package/scripts/ci/check-regression-traceability.sh +0 -67
- package/scripts/ci/dot-cli-startup-bench.sh +0 -126
- package/scripts/ci/install-chezmoi-verified.sh +0 -67
- package/scripts/ci/lint-reusable-pins.sh +0 -78
- package/scripts/ci/run-coverage.sh +0 -451
- package/scripts/ci/validate-chezmoidata.sh +0 -25
- package/scripts/ci/validate-ci-config.sh +0 -224
- package/scripts/ci/windows-smoke-test.ps1 +0 -136
- package/scripts/docs/build-manual.sh +0 -883
- package/scripts/docs/check-manual.sh +0 -213
- package/scripts/dot/lib/bento.sh +0 -50
- package/scripts/dot/lib/log.sh +0 -200
- package/scripts/dot/lib/platform.sh +0 -112
- package/scripts/dot/lib/ui.sh +0 -650
- package/scripts/dot/lib/utils.sh +0 -377
- package/scripts/maintenance/check-updates.sh +0 -131
- package/scripts/release/package-policy-bundles.sh +0 -125
|
@@ -1,195 +0,0 @@
|
|
|
1
|
-
#!/usr/bin/env bash
|
|
2
|
-
## AI Update — Dotfiles AI workflow updater for cross-platform environments.
|
|
3
|
-
##
|
|
4
|
-
## Updates all AI-related tools and runtimes including mise, npm globals,
|
|
5
|
-
## pipx tools, Ollama, and LM Studio. Auto-detects installation methods.
|
|
6
|
-
##
|
|
7
|
-
## # Requirements
|
|
8
|
-
## - curl: For downloading updates
|
|
9
|
-
## - sudo: For system-level updates (Linux)
|
|
10
|
-
## - zstd: For Ollama archive extraction (Linux)
|
|
11
|
-
##
|
|
12
|
-
## # Usage
|
|
13
|
-
## ai-update # Update all AI tools
|
|
14
|
-
##
|
|
15
|
-
## # Platform Notes
|
|
16
|
-
## - macOS: Updates via Homebrew where applicable
|
|
17
|
-
## - Linux: Updates via APT, manual binaries, or pipx
|
|
18
|
-
## - WSL: Full Linux support
|
|
19
|
-
|
|
20
|
-
set -euo pipefail
|
|
21
|
-
|
|
22
|
-
# --- Configuration & Theme ---
|
|
23
|
-
CYAN='[38;5;86m'
|
|
24
|
-
PURPLE='[38;5;141m'
|
|
25
|
-
GREEN='[38;5;84m'
|
|
26
|
-
YELLOW='[38;5;227m'
|
|
27
|
-
RED='[38;5;203m'
|
|
28
|
-
GRAY='[38;5;244m'
|
|
29
|
-
NC='[0m'
|
|
30
|
-
BOLD='[1m'
|
|
31
|
-
|
|
32
|
-
# --- UI Components ---
|
|
33
|
-
log_header() {
|
|
34
|
-
printf '%b\n' "
|
|
35
|
-
${BOLD}${PURPLE}Updating AI Environment${NC}"
|
|
36
|
-
printf '%b\n' "${GRAY}-----------------------------------------------------------${NC}"
|
|
37
|
-
}
|
|
38
|
-
|
|
39
|
-
step() { echo -ne "${CYAN}->${NC} ${BOLD}$1...${NC} "; }
|
|
40
|
-
ok() { printf '%b\n' "${GREEN}done${NC}"; }
|
|
41
|
-
skip() { printf '%b\n' "${YELLOW}skipped${NC} ${GRAY}($1)${NC}"; }
|
|
42
|
-
err() { printf '%b\n' "${RED}error${NC}
|
|
43
|
-
${RED}$1${NC}"; }
|
|
44
|
-
|
|
45
|
-
# --- Initialization ---
|
|
46
|
-
log_header
|
|
47
|
-
|
|
48
|
-
# Pre-auth sudo to avoid mid-script interruptions
|
|
49
|
-
if [[ "$(uname -s)" == "Linux" ]]; then
|
|
50
|
-
step "Authenticating sudo"
|
|
51
|
-
if sudo -v; then ok; else
|
|
52
|
-
err "Sudo required for system updates"
|
|
53
|
-
exit 1
|
|
54
|
-
fi
|
|
55
|
-
fi
|
|
56
|
-
|
|
57
|
-
# --- 1. mise Core (Multi-Method Detection) ---
|
|
58
|
-
if command -v mise >/dev/null 2>&1; then
|
|
59
|
-
step "Checking mise core"
|
|
60
|
-
if [[ "$(uname -s)" == "Linux" ]] && command -v pacman >/dev/null 2>&1 && pacman -Qs mise >/dev/null 2>&1; then
|
|
61
|
-
# Handle Arch/CachyOS AUR/Official package
|
|
62
|
-
sudo pacman -S --noconfirm mise >/dev/null 2>&1 || true
|
|
63
|
-
ok
|
|
64
|
-
elif [[ "$(uname -s)" == "Linux" ]] && command -v dpkg >/dev/null 2>&1 && dpkg -s mise >/dev/null 2>&1; then
|
|
65
|
-
# Handle your ZorinOS APT installation
|
|
66
|
-
sudo apt update -y -o Dir::Etc::sourcelist="sources.list.d/jdx.list" >/dev/null 2>&1 || true
|
|
67
|
-
sudo apt install --only-upgrade -y mise >/dev/null 2>&1
|
|
68
|
-
ok
|
|
69
|
-
elif command -v brew >/dev/null 2>&1 && brew list mise >/dev/null 2>&1; then
|
|
70
|
-
# Handle macOS/Linux Brew installation
|
|
71
|
-
brew upgrade mise >/dev/null 2>&1
|
|
72
|
-
ok
|
|
73
|
-
else
|
|
74
|
-
# Fallback for standalone binary installation
|
|
75
|
-
if mise self-update -y >/dev/null 2>&1; then ok; else skip "manual update needed"; fi
|
|
76
|
-
fi
|
|
77
|
-
else
|
|
78
|
-
skip "mise not found"
|
|
79
|
-
fi
|
|
80
|
-
|
|
81
|
-
# --- 2. System & Language Packages ---
|
|
82
|
-
|
|
83
|
-
# Homebrew
|
|
84
|
-
if command -v brew >/dev/null 2>&1; then
|
|
85
|
-
step "Homebrew packages"
|
|
86
|
-
brew update >/dev/null && brew upgrade --quiet >/dev/null
|
|
87
|
-
ok
|
|
88
|
-
fi
|
|
89
|
-
|
|
90
|
-
# NPM Globals (via mise)
|
|
91
|
-
if command -v mise >/dev/null 2>&1; then
|
|
92
|
-
step "NPM (claude, gemini, etc)"
|
|
93
|
-
mise exec node -- npm update -g --audit=false >/dev/null 2>&1
|
|
94
|
-
ok
|
|
95
|
-
|
|
96
|
-
step "Kiro CLI"
|
|
97
|
-
if [[ "$(uname -s)" == "Darwin" ]]; then
|
|
98
|
-
skip "managed by Kiro app bundle via mise plugin"
|
|
99
|
-
elif mise upgrade kiro-cli >/dev/null 2>&1; then
|
|
100
|
-
ok
|
|
101
|
-
else
|
|
102
|
-
skip "mise plugin update unavailable"
|
|
103
|
-
fi
|
|
104
|
-
fi
|
|
105
|
-
|
|
106
|
-
# Pipx (aider, sgpt)
|
|
107
|
-
if command -v pipx >/dev/null 2>&1; then
|
|
108
|
-
step "Pipx tools"
|
|
109
|
-
pipx upgrade-all >/dev/null 2>&1
|
|
110
|
-
ok
|
|
111
|
-
fi
|
|
112
|
-
|
|
113
|
-
# --- 3. Specialized AI Binaries ---
|
|
114
|
-
|
|
115
|
-
# Ollama (Verified Manual Override)
|
|
116
|
-
if command -v ollama >/dev/null 2>&1; then
|
|
117
|
-
if [[ "$(uname -s)" == "Linux" ]]; then
|
|
118
|
-
step "Ollama (Manual Deployment)"
|
|
119
|
-
arch="$(uname -m)"
|
|
120
|
-
case "$arch" in
|
|
121
|
-
x86_64 | amd64) ollama_arch="amd64" ;;
|
|
122
|
-
aarch64 | arm64) ollama_arch="arm64" ;;
|
|
123
|
-
*) ollama_arch="" ;;
|
|
124
|
-
esac
|
|
125
|
-
|
|
126
|
-
if [[ -n "$ollama_arch" ]]; then
|
|
127
|
-
# Check for updates by comparing local vs remote version
|
|
128
|
-
current_ver="$(ollama --version | awk '{print $NF}' | tr -d '[:space:]')"
|
|
129
|
-
# This is a bit slow but safer than downloading every time
|
|
130
|
-
latest_ver="$(curl -fsSL -I https://github.com/ollama/ollama/releases/latest | grep -i location | sed 's/.*\/v//;s/
|
|
131
|
-
|
|
132
|
-
if [[ "$current_ver" == "$latest_ver" ]]; then
|
|
133
|
-
skip "already up to date"
|
|
134
|
-
else
|
|
135
|
-
tmp_tar="$(umask 077 && mktemp)"
|
|
136
|
-
trap 'rm -f "$tmp_tar"' EXIT
|
|
137
|
-
tar_url="https://ollama.com/download/ollama-linux-${ollama_arch}.tar.zst"
|
|
138
|
-
|
|
139
|
-
if curl -fsSL --retry 2 "$tar_url" -o "$tmp_tar" && zstd -t "$tmp_tar" >/dev/null 2>&1; then
|
|
140
|
-
# Stop service safely
|
|
141
|
-
if command -v systemctl >/dev/null 2>&1; then
|
|
142
|
-
sudo systemctl stop ollama 2>/dev/null || true
|
|
143
|
-
fi
|
|
144
|
-
|
|
145
|
-
# Extract
|
|
146
|
-
zstd -dc "$tmp_tar" | sudo tar -x -C /usr/local >/dev/null
|
|
147
|
-
|
|
148
|
-
# Ensure permissions
|
|
149
|
-
sudo chmod +x /usr/local/bin/ollama
|
|
150
|
-
|
|
151
|
-
# Restart if systemd exists
|
|
152
|
-
if command -v systemctl >/dev/null 2>&1; then
|
|
153
|
-
sudo systemctl daemon-reload
|
|
154
|
-
sudo systemctl start ollama 2>/dev/null || true
|
|
155
|
-
fi
|
|
156
|
-
ok
|
|
157
|
-
else
|
|
158
|
-
err "Integrity check failed"
|
|
159
|
-
fi
|
|
160
|
-
fi
|
|
161
|
-
else
|
|
162
|
-
skip "unsupported arch"
|
|
163
|
-
fi
|
|
164
|
-
else
|
|
165
|
-
# macOS users typically use the .app or Brew
|
|
166
|
-
step "Ollama (macOS)"
|
|
167
|
-
if command -v brew >/dev/null 2>&1 && brew upgrade ollama --cask >/dev/null 2>&1; then
|
|
168
|
-
ok
|
|
169
|
-
else
|
|
170
|
-
skip "Update via App"
|
|
171
|
-
fi
|
|
172
|
-
fi
|
|
173
|
-
fi
|
|
174
|
-
|
|
175
|
-
# LM Studio Runtime
|
|
176
|
-
if command -v lms >/dev/null 2>&1; then
|
|
177
|
-
step "LM Studio Runtime"
|
|
178
|
-
lms runtime update >/dev/null 2>&1
|
|
179
|
-
ok
|
|
180
|
-
fi
|
|
181
|
-
|
|
182
|
-
# --- 4. Final Summary ---
|
|
183
|
-
printf '%b\n' "${GRAY}-----------------------------------------------------------${NC}"
|
|
184
|
-
printf '%b\n' "${GREEN}${BOLD}Dotfiles Environment Ready${NC}"
|
|
185
|
-
|
|
186
|
-
# Version Report
|
|
187
|
-
printf '%b\n' "
|
|
188
|
-
${BOLD}System Version Status:${NC}"
|
|
189
|
-
printf "%b%-12s%b %s\n" "${GRAY}" "Node:" "${NC}" "$(node -v 2>/dev/null || echo 'N/A')"
|
|
190
|
-
printf "%b%-12s%b %s\n" "${GRAY}" "Kiro:" "${NC}" "$(kiro-cli --version 2>/dev/null | awk '{print $NF}' || echo 'N/A')"
|
|
191
|
-
printf "%b%-12s%b %s\n" "${GRAY}" "Ollama:" "${NC}" "$(ollama --version 2>/dev/null | awk '{print $NF}' || echo 'N/A')"
|
|
192
|
-
printf "%b%-12s%b %s\n" "${GRAY}" "Pipx:" "${NC}" "$(pipx --version 2>/dev/null || echo 'N/A')"
|
|
193
|
-
printf "%b%-12s%b %s\n" "${GRAY}" "Mise:" "${NC}" "$(mise --version 2>/dev/null | awk '{print $1}' || echo 'N/A')"
|
|
194
|
-
|
|
195
|
-
trap - EXIT
|
|
@@ -1,152 +0,0 @@
|
|
|
1
|
-
#!/usr/bin/env bash
|
|
2
|
-
## AI Core — Central wrapper for AI operations in the Predictive Shell.
|
|
3
|
-
##
|
|
4
|
-
## Manages local LLM (llamafile) and fallback to GitHub Copilot CLI.
|
|
5
|
-
## Handles model downloading, server management, and query routing.
|
|
6
|
-
##
|
|
7
|
-
## # Requirements
|
|
8
|
-
## - curl: For downloading models and API requests
|
|
9
|
-
## - nc (netcat): For checking server availability
|
|
10
|
-
## - jq: For parsing JSON responses
|
|
11
|
-
## - llamafile (optional): Local LLM server
|
|
12
|
-
## - copilot (optional): GitHub Copilot CLI fallback
|
|
13
|
-
##
|
|
14
|
-
## # Usage
|
|
15
|
-
## ai_core status # Check AI subsystem status
|
|
16
|
-
## ai_core download # Download local LLM model (~4GB)
|
|
17
|
-
## ai_core start # Start local LLM server
|
|
18
|
-
## ai_core query "prompt" # Query the AI (auto-selects provider)
|
|
19
|
-
##
|
|
20
|
-
## # Platform Notes
|
|
21
|
-
## - Linux/macOS: Full support
|
|
22
|
-
## - WSL: Supported with llamafile or Copilot
|
|
23
|
-
## - Model stored in $XDG_DATA_HOME/ai/models/
|
|
24
|
-
|
|
25
|
-
set -euo pipefail
|
|
26
|
-
|
|
27
|
-
# Configuration
|
|
28
|
-
LLAMAFILE_URL="https://huggingface.co/jart/inexpensive-llm/resolve/main/llamafile-server-0.1-llava-v1.5-7b-q4"
|
|
29
|
-
MODEL_DIR="${XDG_DATA_HOME:-$HOME/.local/share}/ai/models"
|
|
30
|
-
MODEL_PATH="$MODEL_DIR/llava-v1.5-7b-q4.llamafile"
|
|
31
|
-
# Default to port 8080 for llamafile server
|
|
32
|
-
SERVER_PORT=8080
|
|
33
|
-
|
|
34
|
-
# Ensure model directory exists
|
|
35
|
-
ensure_model_dir() {
|
|
36
|
-
if [ ! -d "$MODEL_DIR" ]; then
|
|
37
|
-
mkdir -p "$MODEL_DIR"
|
|
38
|
-
fi
|
|
39
|
-
}
|
|
40
|
-
|
|
41
|
-
# Check if we have a local LLM available
|
|
42
|
-
check_local_llm() {
|
|
43
|
-
if [ -f "$MODEL_PATH" ]; then
|
|
44
|
-
return 0
|
|
45
|
-
else
|
|
46
|
-
return 1
|
|
47
|
-
fi
|
|
48
|
-
}
|
|
49
|
-
|
|
50
|
-
# Download the model (interactive only)
|
|
51
|
-
download_model() {
|
|
52
|
-
ensure_model_dir
|
|
53
|
-
echo "Local LLM model not found at $MODEL_PATH"
|
|
54
|
-
echo "This feature requires downloading a localized LLM (~4GB)."
|
|
55
|
-
read -p "Do you want to download it now? (y/n) " -n 1 -r
|
|
56
|
-
echo
|
|
57
|
-
if [[ $REPLY =~ ^[Yy]$ ]]; then
|
|
58
|
-
echo "Downloading llamafile..."
|
|
59
|
-
# Note: curl -L is used to follow redirects
|
|
60
|
-
if curl -L -o "$MODEL_PATH" "$LLAMAFILE_URL"; then
|
|
61
|
-
chmod +x "$MODEL_PATH"
|
|
62
|
-
echo "Download complete. Model saved to $MODEL_PATH"
|
|
63
|
-
else
|
|
64
|
-
echo "Download failed."
|
|
65
|
-
return 1
|
|
66
|
-
fi
|
|
67
|
-
else
|
|
68
|
-
echo "Skipping download. AI features may be limited."
|
|
69
|
-
return 1
|
|
70
|
-
fi
|
|
71
|
-
}
|
|
72
|
-
|
|
73
|
-
# Verify status of AI subsystem
|
|
74
|
-
status() {
|
|
75
|
-
echo "--- Predictive Shell AI Core Status ---"
|
|
76
|
-
if check_local_llm; then
|
|
77
|
-
echo "Local LLM: Installed ($MODEL_PATH)"
|
|
78
|
-
else
|
|
79
|
-
echo "Local LLM: Not installed"
|
|
80
|
-
fi
|
|
81
|
-
|
|
82
|
-
# Check for other providers
|
|
83
|
-
if command -v copilot &>/dev/null; then
|
|
84
|
-
echo "GitHub Copilot CLI: Available"
|
|
85
|
-
elif command -v gh &>/dev/null && gh copilot --version &>/dev/null; then
|
|
86
|
-
echo "GitHub Copilot CLI: Available"
|
|
87
|
-
else
|
|
88
|
-
echo "GitHub Copilot CLI: Not available"
|
|
89
|
-
fi
|
|
90
|
-
}
|
|
91
|
-
|
|
92
|
-
# Start the server (background)
|
|
93
|
-
start_server() {
|
|
94
|
-
if ! check_local_llm; then
|
|
95
|
-
download_model || return 1
|
|
96
|
-
fi
|
|
97
|
-
|
|
98
|
-
echo "Starting Local LLM Server..."
|
|
99
|
-
"$MODEL_PATH" --server --nobrowser --port "$SERVER_PORT" &
|
|
100
|
-
echo "Server started on port $SERVER_PORT"
|
|
101
|
-
}
|
|
102
|
-
|
|
103
|
-
# Query the LLM
|
|
104
|
-
# Usage: ai_core query "Your prompt here"
|
|
105
|
-
query() {
|
|
106
|
-
local prompt="$1"
|
|
107
|
-
|
|
108
|
-
# Priority 1: Local LLM Server if running
|
|
109
|
-
if nc -z localhost "$SERVER_PORT" 2>/dev/null; then
|
|
110
|
-
# Simple curl based query to llamafile standard endpoint
|
|
111
|
-
# Note: This is a simplified example payload
|
|
112
|
-
curl -s -X POST "http://localhost:$SERVER_PORT/completion" \
|
|
113
|
-
-H "Content-Type: application/json" \
|
|
114
|
-
-d "{\"prompt\": \"$prompt\", \"n_predict\": 128}" | jq -r .content
|
|
115
|
-
return
|
|
116
|
-
fi
|
|
117
|
-
|
|
118
|
-
# Priority 2: GitHub Copilot CLI
|
|
119
|
-
if command -v copilot &>/dev/null; then
|
|
120
|
-
echo "Local server not running. Using GitHub Copilot..."
|
|
121
|
-
copilot -p "$prompt"
|
|
122
|
-
return
|
|
123
|
-
fi
|
|
124
|
-
|
|
125
|
-
if command -v gh &>/dev/null && gh copilot --version &>/dev/null; then
|
|
126
|
-
echo "Local server not running. Using GitHub Copilot..."
|
|
127
|
-
gh copilot explain "$prompt"
|
|
128
|
-
return
|
|
129
|
-
fi
|
|
130
|
-
|
|
131
|
-
echo "No AI provider available. Run 'ai_core start' or install GitHub Copilot CLI."
|
|
132
|
-
}
|
|
133
|
-
|
|
134
|
-
case "$1" in
|
|
135
|
-
status)
|
|
136
|
-
status
|
|
137
|
-
;;
|
|
138
|
-
download)
|
|
139
|
-
download_model
|
|
140
|
-
;;
|
|
141
|
-
start)
|
|
142
|
-
start_server
|
|
143
|
-
;;
|
|
144
|
-
query)
|
|
145
|
-
shift
|
|
146
|
-
query "$@"
|
|
147
|
-
;;
|
|
148
|
-
*)
|
|
149
|
-
echo "Usage: $0 {status|download|start|query}"
|
|
150
|
-
exit 1
|
|
151
|
-
;;
|
|
152
|
-
esac
|
|
@@ -1,11 +0,0 @@
|
|
|
1
|
-
#!/usr/bin/env bash
|
|
2
|
-
# Wrapper for Antigravity extension updates under Topgrade.
|
|
3
|
-
# Clears Node/Electron env that can inject custom loaders and crash updater.
|
|
4
|
-
set -euo pipefail
|
|
5
|
-
|
|
6
|
-
unset NODE_OPTIONS
|
|
7
|
-
unset ELECTRON_RUN_AS_NODE
|
|
8
|
-
unset ELECTRON_NO_ATTACH_CONSOLE
|
|
9
|
-
unset ELECTRON_ENABLE_LOGGING
|
|
10
|
-
|
|
11
|
-
exec /usr/bin/antigravity "$@"
|
|
@@ -1,84 +0,0 @@
|
|
|
1
|
-
#!/usr/bin/env bash
|
|
2
|
-
# shellcheck disable=SC2034
|
|
3
|
-
# Copyright (c) 2015-2026 Dotfiles. All rights reserved.
|
|
4
|
-
# Base64 Transcoder with URL-safe support.
|
|
5
|
-
# Part of Dotfiles v0.2.495
|
|
6
|
-
|
|
7
|
-
set -euo pipefail
|
|
8
|
-
|
|
9
|
-
# ANSI Colors
|
|
10
|
-
PURPLE='\033[38;5;135m'
|
|
11
|
-
GRAY='\033[38;5;243m'
|
|
12
|
-
RED='\033[38;5;196m'
|
|
13
|
-
NC='\033[0m'
|
|
14
|
-
BOLD='\033[1m'
|
|
15
|
-
|
|
16
|
-
# Check if TTY for interactive components (though b64 is mostly non-interactive)
|
|
17
|
-
IS_TTY=0
|
|
18
|
-
if [ -t 1 ]; then IS_TTY=1; fi
|
|
19
|
-
|
|
20
|
-
show_help() {
|
|
21
|
-
if [ "$IS_TTY" -eq 1 ]; then
|
|
22
|
-
printf '%b\n' "${BOLD}${PURPLE} Base64 Transcoder${NC} ${GRAY}━━━━━━━━━━━━━━━━━━━━━━━━━━━━${NC}\n"
|
|
23
|
-
else
|
|
24
|
-
echo "Base64 Transcoder"
|
|
25
|
-
fi
|
|
26
|
-
|
|
27
|
-
echo "Usage: b64 [options] [string]"
|
|
28
|
-
echo "Options:"
|
|
29
|
-
echo " -e, --encode Encode to base64 (default)"
|
|
30
|
-
echo " -d, --decode Decode from base64"
|
|
31
|
-
echo " -u, --url URL-safe mode"
|
|
32
|
-
echo " -h, --help Show this help"
|
|
33
|
-
exit 0
|
|
34
|
-
}
|
|
35
|
-
|
|
36
|
-
MODE="encode"
|
|
37
|
-
URL_SAFE=0
|
|
38
|
-
INPUT=""
|
|
39
|
-
|
|
40
|
-
while [ $# -gt 0 ]; do
|
|
41
|
-
case "$1" in
|
|
42
|
-
-e | --encode)
|
|
43
|
-
MODE="encode"
|
|
44
|
-
shift
|
|
45
|
-
;;
|
|
46
|
-
-d | --decode)
|
|
47
|
-
MODE="decode"
|
|
48
|
-
shift
|
|
49
|
-
;;
|
|
50
|
-
-u | --url)
|
|
51
|
-
URL_SAFE=1
|
|
52
|
-
shift
|
|
53
|
-
;;
|
|
54
|
-
-h | --help) show_help ;;
|
|
55
|
-
*)
|
|
56
|
-
INPUT="$1"
|
|
57
|
-
shift
|
|
58
|
-
;;
|
|
59
|
-
esac
|
|
60
|
-
done
|
|
61
|
-
|
|
62
|
-
if [ -z "$INPUT" ]; then
|
|
63
|
-
if [ ! -t 0 ]; then
|
|
64
|
-
INPUT=$(cat -)
|
|
65
|
-
else
|
|
66
|
-
show_help
|
|
67
|
-
fi
|
|
68
|
-
fi
|
|
69
|
-
|
|
70
|
-
if [ "$MODE" = "encode" ]; then
|
|
71
|
-
if [ "$URL_SAFE" -eq 1 ]; then
|
|
72
|
-
printf "%s" "$INPUT" | base64 | tr '+/' '-_' | tr -d '='
|
|
73
|
-
else
|
|
74
|
-
printf "%s" "$INPUT" | base64
|
|
75
|
-
fi
|
|
76
|
-
else
|
|
77
|
-
# Add padding if needed for URL-safe decode
|
|
78
|
-
if [ "$URL_SAFE" -eq 1 ]; then
|
|
79
|
-
INPUT=$(printf "%s" "$INPUT" | tr '-_' '+/')
|
|
80
|
-
while [ $((${#INPUT} % 4)) -ne 0 ]; do INPUT="${INPUT}="; done
|
|
81
|
-
fi
|
|
82
|
-
printf "%s" "$INPUT" | base64 -d
|
|
83
|
-
fi
|
|
84
|
-
echo ""
|
|
@@ -1,79 +0,0 @@
|
|
|
1
|
-
#!/bin/sh
|
|
2
|
-
# Universal directory bookmarking with history support
|
|
3
|
-
# Works across Bash, Zsh, and Fish
|
|
4
|
-
|
|
5
|
-
set -eu
|
|
6
|
-
|
|
7
|
-
# Cross-platform sed in-place (BSD vs GNU)
|
|
8
|
-
_sed_i() {
|
|
9
|
-
if sed --version >/dev/null 2>&1; then
|
|
10
|
-
sed -i "$@" # GNU
|
|
11
|
-
else
|
|
12
|
-
sed -i '' "$@" # BSD (macOS)
|
|
13
|
-
fi
|
|
14
|
-
}
|
|
15
|
-
|
|
16
|
-
BOOKMARKS_FILE="$HOME/.config/shell/bookmarks"
|
|
17
|
-
mkdir -p "$(dirname "$BOOKMARKS_FILE")"
|
|
18
|
-
touch "$BOOKMARKS_FILE"
|
|
19
|
-
|
|
20
|
-
if [ -z "$1" ]; then
|
|
21
|
-
echo "Usage: bm <add|goto|list|remove|update> [name]"
|
|
22
|
-
exit 1
|
|
23
|
-
fi
|
|
24
|
-
|
|
25
|
-
action=$1
|
|
26
|
-
name=$2
|
|
27
|
-
|
|
28
|
-
case "$action" in
|
|
29
|
-
add)
|
|
30
|
-
if [ -z "$name" ]; then
|
|
31
|
-
echo "Usage: bm add <name>"
|
|
32
|
-
exit 1
|
|
33
|
-
fi
|
|
34
|
-
echo "$name $(pwd)" >>"$BOOKMARKS_FILE"
|
|
35
|
-
echo "Bookmark '$name' added for $(pwd)"
|
|
36
|
-
;;
|
|
37
|
-
goto)
|
|
38
|
-
if [ -z "$name" ]; then
|
|
39
|
-
echo "Usage: bm goto <name>"
|
|
40
|
-
exit 1
|
|
41
|
-
fi
|
|
42
|
-
target=$(grep "^$name " "$BOOKMARKS_FILE" | cut -d' ' -f2-)
|
|
43
|
-
if [ -n "$target" ] && [ -d "$target" ]; then
|
|
44
|
-
# We output the target path, the shell alias/function must handle the cd
|
|
45
|
-
echo "$target"
|
|
46
|
-
else
|
|
47
|
-
echo "Bookmark '$name' not found or invalid directory" >&2
|
|
48
|
-
exit 1
|
|
49
|
-
fi
|
|
50
|
-
;;
|
|
51
|
-
list)
|
|
52
|
-
if [ -t 1 ] && command -v gum >/dev/null 2>&1; then
|
|
53
|
-
cat "$BOOKMARKS_FILE" | gum table --columns Name,Path
|
|
54
|
-
else
|
|
55
|
-
cat "$BOOKMARKS_FILE"
|
|
56
|
-
fi
|
|
57
|
-
;;
|
|
58
|
-
remove)
|
|
59
|
-
if [ -z "$name" ]; then
|
|
60
|
-
echo "Usage: bm remove <name>"
|
|
61
|
-
exit 1
|
|
62
|
-
fi
|
|
63
|
-
_sed_i "/^$name /d" "$BOOKMARKS_FILE"
|
|
64
|
-
echo "Bookmark '$name' removed"
|
|
65
|
-
;;
|
|
66
|
-
update)
|
|
67
|
-
if [ -z "$name" ]; then
|
|
68
|
-
echo "Usage: bm update <name>"
|
|
69
|
-
exit 1
|
|
70
|
-
fi
|
|
71
|
-
_sed_i "/^$name /d" "$BOOKMARKS_FILE"
|
|
72
|
-
echo "$name $(pwd)" >>"$BOOKMARKS_FILE"
|
|
73
|
-
echo "Bookmark '$name' updated to $(pwd)"
|
|
74
|
-
;;
|
|
75
|
-
*)
|
|
76
|
-
echo "Unknown action: $action"
|
|
77
|
-
exit 1
|
|
78
|
-
;;
|
|
79
|
-
esac
|
|
@@ -1,39 +0,0 @@
|
|
|
1
|
-
#!/bin/sh
|
|
2
|
-
# Copyright (c) 2015-2026 Dotfiles. All rights reserved.
|
|
3
|
-
# Universal clipboard integration (cb)
|
|
4
|
-
# Supports macOS (pbcopy), Linux (xclip/wl-copy), and WSL (clip.exe)
|
|
5
|
-
|
|
6
|
-
set -eu
|
|
7
|
-
|
|
8
|
-
# Helper for rich feedback if TTY is present
|
|
9
|
-
log_info() {
|
|
10
|
-
if [ -t 1 ] && command -v gum >/dev/null 2>&1; then
|
|
11
|
-
gum style --foreground 212 " $1"
|
|
12
|
-
else
|
|
13
|
-
echo "cb: $1"
|
|
14
|
-
fi
|
|
15
|
-
}
|
|
16
|
-
|
|
17
|
-
case "$(uname -s)" in
|
|
18
|
-
Darwin)
|
|
19
|
-
if [ -t 0 ]; then
|
|
20
|
-
pbpaste
|
|
21
|
-
else
|
|
22
|
-
pbcopy && log_info "Copied to macOS clipboard"
|
|
23
|
-
fi
|
|
24
|
-
;;
|
|
25
|
-
Linux)
|
|
26
|
-
if grep -qi microsoft /proc/version 2>/dev/null; then
|
|
27
|
-
# WSL
|
|
28
|
-
if [ -t 0 ]; then
|
|
29
|
-
powershell.exe -command "Get-Clipboard" | tr -d '\r'
|
|
30
|
-
else
|
|
31
|
-
clip.exe && log_info "Copied to Windows clipboard (WSL)"
|
|
32
|
-
fi
|
|
33
|
-
elif [ -n "$WAYLAND_DISPLAY" ]; then
|
|
34
|
-
if [ -t 0 ]; then wl-paste; else wl-copy && log_info "Copied to Wayland clipboard"; fi
|
|
35
|
-
else
|
|
36
|
-
if [ -t 0 ]; then xclip -selection clipboard -o; else xclip -selection clipboard && log_info "Copied to X11 clipboard"; fi
|
|
37
|
-
fi
|
|
38
|
-
;;
|
|
39
|
-
esac
|