@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,314 +0,0 @@
|
|
|
1
|
-
#!/usr/bin/env bash
|
|
2
|
-
# Copyright (c) 2015-2026 Dotfiles. All rights reserved.
|
|
3
|
-
## tmux-sessionizer — Fuzzy project session manager for tmux.
|
|
4
|
-
##
|
|
5
|
-
## Combines zoxide frecency, project directories, and active sessions
|
|
6
|
-
## into a single fzf picker with live previews.
|
|
7
|
-
##
|
|
8
|
-
## # Usage
|
|
9
|
-
## tmux-sessionizer # Interactive picker
|
|
10
|
-
## tmux-sessionizer /path/to/project # Create/switch directly
|
|
11
|
-
## tmux-sessionizer --kill # Kill a session interactively
|
|
12
|
-
##
|
|
13
|
-
## # Configuration
|
|
14
|
-
## TMUX_SESSIONIZER_DIRS Search paths (colon-separated)
|
|
15
|
-
## Default: ~/projects:~/work:~/src:~/.dotfiles
|
|
16
|
-
##
|
|
17
|
-
## # Keybindings (inside fzf)
|
|
18
|
-
## Enter Switch to session
|
|
19
|
-
## Ctrl-X Kill selected session
|
|
20
|
-
## Ctrl-N New session from directory
|
|
21
|
-
## Ctrl-R Refresh list
|
|
22
|
-
|
|
23
|
-
set -euo pipefail
|
|
24
|
-
|
|
25
|
-
# --- Configuration ---
|
|
26
|
-
SESSIONIZER_DIRS="${TMUX_SESSIONIZER_DIRS:-$HOME/projects:$HOME/work:$HOME/src:$HOME/.dotfiles}"
|
|
27
|
-
|
|
28
|
-
# --- Colors ---
|
|
29
|
-
readonly DIM=$'\033[2m'
|
|
30
|
-
readonly BOLD=$'\033[1m'
|
|
31
|
-
readonly GREEN=$'\033[32m'
|
|
32
|
-
readonly BLUE=$'\033[34m'
|
|
33
|
-
readonly RED=$'\033[31m'
|
|
34
|
-
readonly NC=$'\033[0m'
|
|
35
|
-
|
|
36
|
-
# --- Dependency checks ---
|
|
37
|
-
for cmd in fzf tmux; do
|
|
38
|
-
if ! command -v "$cmd" &>/dev/null; then
|
|
39
|
-
echo "${RED}Error:${NC} $cmd required" >&2
|
|
40
|
-
exit 1
|
|
41
|
-
fi
|
|
42
|
-
done
|
|
43
|
-
|
|
44
|
-
# --- Helper functions ---
|
|
45
|
-
|
|
46
|
-
# Get project directories from configured paths
|
|
47
|
-
get_project_dirs() {
|
|
48
|
-
local paths
|
|
49
|
-
IFS=':' read -ra paths <<<"$SESSIONIZER_DIRS"
|
|
50
|
-
for path in "${paths[@]}"; do
|
|
51
|
-
local expanded="${path/#\~/$HOME}"
|
|
52
|
-
[[ -d "$expanded" ]] && find "$expanded" -mindepth 1 -maxdepth 2 -type d 2>/dev/null | head -200
|
|
53
|
-
done
|
|
54
|
-
}
|
|
55
|
-
|
|
56
|
-
# Get zoxide frecency results (most visited directories)
|
|
57
|
-
get_zoxide_dirs() {
|
|
58
|
-
if command -v zoxide &>/dev/null; then
|
|
59
|
-
zoxide query --list 2>/dev/null | head -20
|
|
60
|
-
fi
|
|
61
|
-
}
|
|
62
|
-
|
|
63
|
-
# Get active tmux sessions with metadata
|
|
64
|
-
get_sessions() {
|
|
65
|
-
tmux list-sessions -F "#{session_name}|#{session_windows}w|#{?session_attached,attached,}" 2>/dev/null || true
|
|
66
|
-
}
|
|
67
|
-
|
|
68
|
-
# Build the combined list with icons and labels
|
|
69
|
-
build_list() {
|
|
70
|
-
local sessions projects zoxide_dirs
|
|
71
|
-
|
|
72
|
-
# Active sessions (top priority, green icon)
|
|
73
|
-
sessions=$(get_sessions)
|
|
74
|
-
if [[ -n "$sessions" ]]; then
|
|
75
|
-
while IFS='|' read -r name windows attached; do
|
|
76
|
-
local icon="● "
|
|
77
|
-
local suffix="${DIM}${windows}${NC}"
|
|
78
|
-
[[ -n "$attached" ]] && suffix="${suffix} ${GREEN}${attached}${NC}"
|
|
79
|
-
printf '%b\n' "${GREEN}${icon}${NC}${BOLD}${name}${NC} ${suffix}"
|
|
80
|
-
done <<<"$sessions"
|
|
81
|
-
fi
|
|
82
|
-
|
|
83
|
-
# Zoxide frecent directories (blue icon, deduplicated against sessions)
|
|
84
|
-
zoxide_dirs=$(get_zoxide_dirs)
|
|
85
|
-
if [[ -n "$zoxide_dirs" ]]; then
|
|
86
|
-
while IFS= read -r dir; do
|
|
87
|
-
[[ ! -d "$dir" ]] && continue
|
|
88
|
-
local name
|
|
89
|
-
name=$(basename "$dir" | tr '.' '_' | tr -cd '[:alnum:]._-')
|
|
90
|
-
# Skip if already an active session
|
|
91
|
-
if tmux has-session -t="$name" 2>/dev/null; then
|
|
92
|
-
continue
|
|
93
|
-
fi
|
|
94
|
-
printf '%b\n' "${BLUE}◆ ${NC}${name} ${DIM}${dir}${NC}"
|
|
95
|
-
done <<<"$zoxide_dirs"
|
|
96
|
-
fi
|
|
97
|
-
|
|
98
|
-
# Project directories (dim icon, deduplicated)
|
|
99
|
-
projects=$(get_project_dirs)
|
|
100
|
-
if [[ -n "$projects" ]]; then
|
|
101
|
-
while IFS= read -r dir; do
|
|
102
|
-
local name
|
|
103
|
-
name=$(basename "$dir" | tr '.' '_' | tr -cd '[:alnum:]._-')
|
|
104
|
-
# Skip if already listed
|
|
105
|
-
if tmux has-session -t="$name" 2>/dev/null; then
|
|
106
|
-
continue
|
|
107
|
-
fi
|
|
108
|
-
# Skip if already in zoxide list
|
|
109
|
-
if [[ -n "$zoxide_dirs" ]] && echo "$zoxide_dirs" | grep -qF "$dir"; then
|
|
110
|
-
continue
|
|
111
|
-
fi
|
|
112
|
-
printf '%b\n' "${DIM}○ ${NC}${name} ${DIM}${dir}${NC}"
|
|
113
|
-
done <<<"$projects"
|
|
114
|
-
fi
|
|
115
|
-
}
|
|
116
|
-
|
|
117
|
-
# Format session name from path
|
|
118
|
-
format_name() {
|
|
119
|
-
[[ -n "${1:-}" ]] || return 1 # R5: validate input
|
|
120
|
-
local dir="$1"
|
|
121
|
-
basename "$dir" | tr '.' '_' | tr -cd '[:alnum:]._-' | head -c 32
|
|
122
|
-
}
|
|
123
|
-
|
|
124
|
-
# Resolve the actual path from a selection line
|
|
125
|
-
resolve_selection() {
|
|
126
|
-
[[ -n "${1:-}" ]] || return 1 # R5: validate input
|
|
127
|
-
local line="$1"
|
|
128
|
-
# Strip ANSI codes
|
|
129
|
-
local clean
|
|
130
|
-
clean=$(echo "$line" | sed 's/\x1b\[[0-9;]*m//g')
|
|
131
|
-
|
|
132
|
-
# Extract the name (second field after icon)
|
|
133
|
-
local name path
|
|
134
|
-
name=$(echo "$clean" | awk '{print $2}')
|
|
135
|
-
path=$(echo "$clean" | awk '{print $3}')
|
|
136
|
-
|
|
137
|
-
# If it's an active session, just return the name
|
|
138
|
-
if tmux has-session -t="$name" 2>/dev/null; then
|
|
139
|
-
echo "session:$name"
|
|
140
|
-
return
|
|
141
|
-
fi
|
|
142
|
-
|
|
143
|
-
# If path exists, return it
|
|
144
|
-
if [[ -n "$path" && -d "$path" ]]; then
|
|
145
|
-
echo "dir:$path"
|
|
146
|
-
return
|
|
147
|
-
fi
|
|
148
|
-
|
|
149
|
-
# Try to find the directory by name
|
|
150
|
-
local found
|
|
151
|
-
found=$(get_project_dirs 2>/dev/null | grep "/${name}$" | head -1)
|
|
152
|
-
if [[ -n "$found" ]]; then
|
|
153
|
-
echo "dir:$found"
|
|
154
|
-
return
|
|
155
|
-
fi
|
|
156
|
-
|
|
157
|
-
# Try zoxide
|
|
158
|
-
if command -v zoxide &>/dev/null; then
|
|
159
|
-
found=$(zoxide query "$name" 2>/dev/null || true)
|
|
160
|
-
if [[ -n "$found" && -d "$found" ]]; then
|
|
161
|
-
echo "dir:$found"
|
|
162
|
-
return
|
|
163
|
-
fi
|
|
164
|
-
fi
|
|
165
|
-
|
|
166
|
-
echo "name:$name"
|
|
167
|
-
}
|
|
168
|
-
|
|
169
|
-
# Switch to or create a session
|
|
170
|
-
switch_to() {
|
|
171
|
-
[[ -n "${1:-}" ]] || return 1 # R5: validate input
|
|
172
|
-
local target="$1"
|
|
173
|
-
local type="${target%%:*}"
|
|
174
|
-
local value="${target#*:}"
|
|
175
|
-
|
|
176
|
-
local session_name
|
|
177
|
-
|
|
178
|
-
case "$type" in
|
|
179
|
-
session)
|
|
180
|
-
session_name="$value"
|
|
181
|
-
;;
|
|
182
|
-
dir)
|
|
183
|
-
session_name=$(format_name "$value")
|
|
184
|
-
if ! tmux has-session -t="$session_name" 2>/dev/null; then
|
|
185
|
-
tmux new-session -ds "$session_name" -c "$value"
|
|
186
|
-
# Record in zoxide
|
|
187
|
-
command -v zoxide &>/dev/null && zoxide add "$value" 2>/dev/null || true
|
|
188
|
-
fi
|
|
189
|
-
;;
|
|
190
|
-
name)
|
|
191
|
-
session_name="$value"
|
|
192
|
-
if ! tmux has-session -t="$session_name" 2>/dev/null; then
|
|
193
|
-
tmux new-session -ds "$session_name"
|
|
194
|
-
fi
|
|
195
|
-
;;
|
|
196
|
-
esac
|
|
197
|
-
|
|
198
|
-
if [[ -z "${TMUX:-}" ]]; then
|
|
199
|
-
tmux attach-session -t "$session_name"
|
|
200
|
-
else
|
|
201
|
-
tmux switch-client -t "$session_name"
|
|
202
|
-
fi
|
|
203
|
-
}
|
|
204
|
-
|
|
205
|
-
# Kill a session interactively
|
|
206
|
-
kill_session() {
|
|
207
|
-
local sessions
|
|
208
|
-
sessions=$(tmux list-sessions -F "#{session_name}" 2>/dev/null || true)
|
|
209
|
-
if [[ -z "$sessions" ]]; then
|
|
210
|
-
echo "No active sessions."
|
|
211
|
-
return
|
|
212
|
-
fi
|
|
213
|
-
|
|
214
|
-
local selected
|
|
215
|
-
selected=$(echo "$sessions" | fzf \
|
|
216
|
-
--header "Kill session" \
|
|
217
|
-
--prompt "Session > " \
|
|
218
|
-
--height 40% \
|
|
219
|
-
--reverse \
|
|
220
|
-
--no-preview \
|
|
221
|
-
--no-sort) || return 0
|
|
222
|
-
|
|
223
|
-
if [[ -n "$selected" ]]; then
|
|
224
|
-
tmux kill-session -t "$selected"
|
|
225
|
-
echo "${RED}Killed:${NC} $selected"
|
|
226
|
-
fi
|
|
227
|
-
}
|
|
228
|
-
|
|
229
|
-
# --- Preview command for fzf ---
|
|
230
|
-
preview_cmd() {
|
|
231
|
-
local line="$1"
|
|
232
|
-
local clean
|
|
233
|
-
clean=$(echo "$line" | sed 's/\x1b\[[0-9;]*m//g')
|
|
234
|
-
local name path
|
|
235
|
-
name=$(echo "$clean" | awk '{print $2}')
|
|
236
|
-
path=$(echo "$clean" | awk '{print $3}')
|
|
237
|
-
|
|
238
|
-
# If it's an active session, show pane content
|
|
239
|
-
if tmux has-session -t="$name" 2>/dev/null; then
|
|
240
|
-
echo "━━━ Session: $name ━━━"
|
|
241
|
-
tmux list-windows -t "$name" -F " #I: #W #{?window_active,●,○}" 2>/dev/null
|
|
242
|
-
echo ""
|
|
243
|
-
tmux capture-pane -pt "$name" -p 2>/dev/null | head -20
|
|
244
|
-
elif [[ -n "$path" && -d "$path" ]]; then
|
|
245
|
-
echo "━━━ Directory: $path ━━━"
|
|
246
|
-
# Show git info if available
|
|
247
|
-
if [[ -d "$path/.git" ]]; then
|
|
248
|
-
echo " Branch: $(git -C "$path" branch --show-current 2>/dev/null)"
|
|
249
|
-
echo " Commits: $(git -C "$path" rev-list --count HEAD 2>/dev/null)"
|
|
250
|
-
echo ""
|
|
251
|
-
fi
|
|
252
|
-
ls -la "$path" 2>/dev/null | head -15
|
|
253
|
-
else
|
|
254
|
-
echo "No preview available"
|
|
255
|
-
fi
|
|
256
|
-
}
|
|
257
|
-
export -f preview_cmd
|
|
258
|
-
|
|
259
|
-
# --- Main ---
|
|
260
|
-
main() {
|
|
261
|
-
# Handle flags
|
|
262
|
-
case "${1:-}" in
|
|
263
|
-
--kill | -k)
|
|
264
|
-
kill_session
|
|
265
|
-
return
|
|
266
|
-
;;
|
|
267
|
-
--help | -h)
|
|
268
|
-
echo "${BOLD}tmux-sessionizer${NC} — fuzzy project session manager"
|
|
269
|
-
echo ""
|
|
270
|
-
echo "Usage: tmux-sessionizer [path | --kill | --help]"
|
|
271
|
-
echo ""
|
|
272
|
-
echo "Keybindings:"
|
|
273
|
-
echo " Enter Switch to session"
|
|
274
|
-
echo " Ctrl-X Kill selected session"
|
|
275
|
-
return
|
|
276
|
-
;;
|
|
277
|
-
esac
|
|
278
|
-
|
|
279
|
-
# Direct path argument
|
|
280
|
-
if [[ $# -eq 1 && -d "$1" ]]; then
|
|
281
|
-
switch_to "dir:$1"
|
|
282
|
-
return
|
|
283
|
-
fi
|
|
284
|
-
|
|
285
|
-
# Interactive picker
|
|
286
|
-
local list
|
|
287
|
-
list=$(build_list)
|
|
288
|
-
|
|
289
|
-
if [[ -z "$list" ]]; then
|
|
290
|
-
echo "${RED}No sessions or directories found.${NC}" >&2
|
|
291
|
-
exit 1
|
|
292
|
-
fi
|
|
293
|
-
|
|
294
|
-
local selected
|
|
295
|
-
selected=$(
|
|
296
|
-
printf '%b\n' "$list" | fzf \
|
|
297
|
-
--ansi \
|
|
298
|
-
--header "tmux sessions (Ctrl-X: kill)" \
|
|
299
|
-
--prompt "❱ " \
|
|
300
|
-
--height 60% \
|
|
301
|
-
--reverse \
|
|
302
|
-
--no-sort \
|
|
303
|
-
--no-preview \
|
|
304
|
-
--bind "ctrl-x:execute-silent(tmux kill-session -t {2} 2>/dev/null)+reload(bash -c 'source $0; build_list')"
|
|
305
|
-
) || exit 0
|
|
306
|
-
|
|
307
|
-
if [[ -n "$selected" ]]; then
|
|
308
|
-
local target
|
|
309
|
-
target=$(resolve_selection "$selected")
|
|
310
|
-
switch_to "$target"
|
|
311
|
-
fi
|
|
312
|
-
}
|
|
313
|
-
|
|
314
|
-
main "$@"
|
|
@@ -1,177 +0,0 @@
|
|
|
1
|
-
#!/bin/sh
|
|
2
|
-
# Interactive Tour using Gum
|
|
3
|
-
# Part of Dotfiles v0.2.502
|
|
4
|
-
|
|
5
|
-
set -eu
|
|
6
|
-
|
|
7
|
-
if ! command -v gum >/dev/null; then
|
|
8
|
-
echo "Error: 'gum' is not installed."
|
|
9
|
-
case "$(uname -s)" in
|
|
10
|
-
Darwin)
|
|
11
|
-
echo "Install: brew install gum"
|
|
12
|
-
;;
|
|
13
|
-
Linux)
|
|
14
|
-
if command -v snap >/dev/null; then
|
|
15
|
-
echo "Install: sudo snap install gum --classic"
|
|
16
|
-
else
|
|
17
|
-
echo "Install: go install github.com/charmbracelet/gum@latest"
|
|
18
|
-
fi
|
|
19
|
-
;;
|
|
20
|
-
*)
|
|
21
|
-
echo "Install gum from: https://github.com/charmbracelet/gum"
|
|
22
|
-
;;
|
|
23
|
-
esac
|
|
24
|
-
exit 1
|
|
25
|
-
fi
|
|
26
|
-
|
|
27
|
-
if [ ! -t 1 ]; then
|
|
28
|
-
echo "Error: This interactive tour requires a TTY."
|
|
29
|
-
exit 1
|
|
30
|
-
fi
|
|
31
|
-
|
|
32
|
-
clear
|
|
33
|
-
|
|
34
|
-
# Intro (match UI header style)
|
|
35
|
-
banner='██████╗ ██████╗ ████████╗███████╗██╗██╗ ███████╗███████╗
|
|
36
|
-
██╔══██╗██╔═══██╗╚══██╔══╝██╔════╝██║██║ ██╔════╝██╔════╝
|
|
37
|
-
██║ ██║██║ ██║ ██║ █████╗ ██║██║ █████╗ ███████╗
|
|
38
|
-
██║ ██║██║ ██║ ██║ ██╔══╝ ██║██║ ██╔══╝ ╚════██║
|
|
39
|
-
██████╔╝╚██████╔╝ ██║ ██║ ██║███████╗███████╗███████║
|
|
40
|
-
╚═════╝ ╚═════╝ ╚═╝ ╚═╝ ╚═╝╚══════╝╚══════╝╚══════╝
|
|
41
|
-
|
|
42
|
-
v0.2.502 · Infrastructure‑grade shell environment'
|
|
43
|
-
|
|
44
|
-
gum style \
|
|
45
|
-
--foreground 212 --border-foreground 212 --border double \
|
|
46
|
-
--align center --margin "1 2" --padding "1 2" \
|
|
47
|
-
"$banner"
|
|
48
|
-
|
|
49
|
-
echo ""
|
|
50
|
-
gum confirm "Start a quick tour?" || exit 0
|
|
51
|
-
clear
|
|
52
|
-
|
|
53
|
-
# Slide 1: Shell & configuration
|
|
54
|
-
gum style \
|
|
55
|
-
--foreground 99 --border rounded --padding "1 2" --margin "1 2" \
|
|
56
|
-
"Shell & configuration" \
|
|
57
|
-
"Default shell: Fish. Change it in .chezmoidata.toml." \
|
|
58
|
-
" " \
|
|
59
|
-
"dot apply # Apply dotfiles" \
|
|
60
|
-
"dot update # Pull and apply updates" \
|
|
61
|
-
"dot diff # Review local changes" \
|
|
62
|
-
"dot drift # Snapshot config drift" \
|
|
63
|
-
"dot help # Browse all commands"
|
|
64
|
-
|
|
65
|
-
echo ""
|
|
66
|
-
gum confirm "Next: Check health" || exit 0
|
|
67
|
-
clear
|
|
68
|
-
|
|
69
|
-
# Slide 2: Diagnostics
|
|
70
|
-
gum style \
|
|
71
|
-
--foreground 75 --border rounded --padding "1 2" --margin "1 2" \
|
|
72
|
-
"Check health" \
|
|
73
|
-
"Know what’s working. See what needs attention." \
|
|
74
|
-
" " \
|
|
75
|
-
"dot doctor # Health checks" \
|
|
76
|
-
"dot history # History analysis" \
|
|
77
|
-
"dot benchmark # Startup timing"
|
|
78
|
-
|
|
79
|
-
echo ""
|
|
80
|
-
gum confirm "Next: Secrets" || exit 0
|
|
81
|
-
clear
|
|
82
|
-
|
|
83
|
-
# Slide 3: Secrets
|
|
84
|
-
gum style \
|
|
85
|
-
--foreground 214 --border rounded --padding "1 2" --margin "1 2" \
|
|
86
|
-
"Secrets (age)" \
|
|
87
|
-
"Keep sensitive data local and encrypted." \
|
|
88
|
-
" " \
|
|
89
|
-
"dot secrets-init # Create a key" \
|
|
90
|
-
"dot secrets # Edit secrets" \
|
|
91
|
-
"dot secrets-create # New encrypted file" \
|
|
92
|
-
"dot ssh-key # Encrypt an SSH key"
|
|
93
|
-
|
|
94
|
-
echo ""
|
|
95
|
-
gum confirm "Next: Security (opt‑in)" || exit 0
|
|
96
|
-
clear
|
|
97
|
-
|
|
98
|
-
# Slide 4: Security (opt-in)
|
|
99
|
-
gum style \
|
|
100
|
-
--foreground 150 --border double --padding "1 2" --margin "1 2" \
|
|
101
|
-
"Security (opt‑in)" \
|
|
102
|
-
"Explicit by design. Nothing changes without your choice." \
|
|
103
|
-
" " \
|
|
104
|
-
"dot firewall # Firewall hardening" \
|
|
105
|
-
"dot telemetry # Disable OS telemetry" \
|
|
106
|
-
"dot dns-doh # DNS‑over‑HTTPS (Linux)" \
|
|
107
|
-
"dot lock-screen # Idle lock settings" \
|
|
108
|
-
"dot usb-safety # Disable automount" \
|
|
109
|
-
"dot encrypt-check # Disk encryption status"
|
|
110
|
-
|
|
111
|
-
echo ""
|
|
112
|
-
gum confirm "Next: Themes & UX" || exit 0
|
|
113
|
-
clear
|
|
114
|
-
|
|
115
|
-
# Slide 5: Themes & UX
|
|
116
|
-
gum style \
|
|
117
|
-
--foreground 212 --border rounded --padding "1 2" --margin "1 2" \
|
|
118
|
-
"Themes & UX" \
|
|
119
|
-
"Make it yours without changing how it works." \
|
|
120
|
-
" " \
|
|
121
|
-
"dot theme # Switch theme" \
|
|
122
|
-
"dot wallpaper # Apply wallpaper" \
|
|
123
|
-
"dot fonts # Install Nerd Fonts" \
|
|
124
|
-
"dot keys # Keybindings" \
|
|
125
|
-
"dot tools # Curated utilities" \
|
|
126
|
-
" " \
|
|
127
|
-
"Edit ~/.dotfiles/.chezmoidata.toml for shell, features, and profiles."
|
|
128
|
-
|
|
129
|
-
echo ""
|
|
130
|
-
gum confirm "Next: Projects & Sandbox" || exit 0
|
|
131
|
-
clear
|
|
132
|
-
|
|
133
|
-
# Slide 6: Projects & Sandbox
|
|
134
|
-
gum style \
|
|
135
|
-
--foreground 111 --border rounded --padding "1 2" --margin "1 2" \
|
|
136
|
-
"Projects & sandbox" \
|
|
137
|
-
"Start quickly. Experiment safely." \
|
|
138
|
-
" " \
|
|
139
|
-
"dot new <lang> <name> # Templates: python, go, node" \
|
|
140
|
-
"dot sandbox # Safe preview (Docker/Podman)" \
|
|
141
|
-
"dot edit # Open source in editor"
|
|
142
|
-
|
|
143
|
-
echo ""
|
|
144
|
-
gum confirm "Next: Linting & Performance" || exit 0
|
|
145
|
-
clear
|
|
146
|
-
|
|
147
|
-
# Slide 7: Linting & Performance
|
|
148
|
-
gum style \
|
|
149
|
-
--foreground 214 --border rounded --padding "1 2" --margin "1 2" \
|
|
150
|
-
"Linting & Performance" \
|
|
151
|
-
"Keep your scripts clean and your shell fast." \
|
|
152
|
-
" " \
|
|
153
|
-
"dot lint # ShellCheck + shfmt" \
|
|
154
|
-
"dot lint --fix # Auto-format scripts" \
|
|
155
|
-
"dot lint --check # CI mode (exit 1 on failure)" \
|
|
156
|
-
"dot benchmark --waterfall # Startup waterfall chart" \
|
|
157
|
-
"dot perf # Quick performance timing"
|
|
158
|
-
|
|
159
|
-
echo ""
|
|
160
|
-
gum confirm "Next: Finish" || exit 0
|
|
161
|
-
clear
|
|
162
|
-
|
|
163
|
-
# Final summary
|
|
164
|
-
gum style \
|
|
165
|
-
--foreground 212 --border double --padding "1 2" --margin "1 2" \
|
|
166
|
-
"You’re all set!" \
|
|
167
|
-
" " \
|
|
168
|
-
"Tip: run ‘dot update’ weekly to stay current."
|
|
169
|
-
|
|
170
|
-
echo ""
|
|
171
|
-
choice=$(gum choose "Run dot doctor" "Run dot benchmark" "Open docs" "Exit")
|
|
172
|
-
case "$choice" in
|
|
173
|
-
"Run dot doctor") exec dot doctor ;;
|
|
174
|
-
"Run dot benchmark") exec dot benchmark ;;
|
|
175
|
-
"Open docs") exec dot docs ;;
|
|
176
|
-
"Exit") exit 0 ;;
|
|
177
|
-
esac
|
|
@@ -1,23 +0,0 @@
|
|
|
1
|
-
#!/bin/sh
|
|
2
|
-
# Universal directory navigation with history support
|
|
3
|
-
# Works across Bash, Zsh, and Fish
|
|
4
|
-
|
|
5
|
-
set -eu
|
|
6
|
-
|
|
7
|
-
levels=${1:-1}
|
|
8
|
-
target=".."
|
|
9
|
-
|
|
10
|
-
case "$levels" in
|
|
11
|
-
2) target="../.." ;;
|
|
12
|
-
3) target="../../.." ;;
|
|
13
|
-
4) target="../../../../.." ;;
|
|
14
|
-
5) target="../../../../../.." ;;
|
|
15
|
-
*) target=".." ;;
|
|
16
|
-
esac
|
|
17
|
-
|
|
18
|
-
# If cd_with_history (a dotfiles function) is available, use it.
|
|
19
|
-
# Since this script runs in a subshell, we can't easily call parent functions.
|
|
20
|
-
# Instead, we just output the target or rely on the shell's own history.
|
|
21
|
-
|
|
22
|
-
cd "$target" || exit 1
|
|
23
|
-
$SHELL
|
|
@@ -1,142 +0,0 @@
|
|
|
1
|
-
#!/usr/bin/env bash
|
|
2
|
-
## System Update — Update all system packages and tools.
|
|
3
|
-
##
|
|
4
|
-
## Comprehensive update utility for multiple package managers.
|
|
5
|
-
## Supports selective updates and combined operations.
|
|
6
|
-
##
|
|
7
|
-
## # Requirements
|
|
8
|
-
## - Various package managers (auto-detected)
|
|
9
|
-
## - sudo: For system package updates
|
|
10
|
-
##
|
|
11
|
-
## # Usage
|
|
12
|
-
## update # Update all detected managers
|
|
13
|
-
## update --brew # Update Homebrew only
|
|
14
|
-
## update --apt # Update APT only
|
|
15
|
-
## update --npm # Update NPM globals only
|
|
16
|
-
## update --cargo # Update Rust packages
|
|
17
|
-
## update --pip # Update Python packages
|
|
18
|
-
##
|
|
19
|
-
## # Platform Notes
|
|
20
|
-
## - macOS: Updates Homebrew, npm, cargo, pip
|
|
21
|
-
## - Linux: Updates apt/dnf, npm, cargo, pip
|
|
22
|
-
## - Also checks chezmoi dotfiles status
|
|
23
|
-
|
|
24
|
-
set -euo pipefail
|
|
25
|
-
|
|
26
|
-
CYAN='\033[0;36m'
|
|
27
|
-
GREEN='\033[0;32m'
|
|
28
|
-
YELLOW='\033[1;33m'
|
|
29
|
-
NC='\033[0m'
|
|
30
|
-
|
|
31
|
-
log_section() { printf '%b\n' "\n${CYAN}--- $1 ---${NC}"; }
|
|
32
|
-
log_success() { printf '%b\n' "${GREEN}Done:${NC} $1"; }
|
|
33
|
-
log_skip() { printf '%b\n' "${YELLOW}Skipped:${NC} $1"; }
|
|
34
|
-
|
|
35
|
-
# Parse arguments
|
|
36
|
-
UPDATE_ALL=true
|
|
37
|
-
UPDATE_BREW=false
|
|
38
|
-
UPDATE_APT=false
|
|
39
|
-
UPDATE_NPM=false
|
|
40
|
-
UPDATE_CARGO=false
|
|
41
|
-
UPDATE_PIP=false
|
|
42
|
-
|
|
43
|
-
for arg in "$@"; do
|
|
44
|
-
case "$arg" in
|
|
45
|
-
--all) UPDATE_ALL=true ;;
|
|
46
|
-
--brew)
|
|
47
|
-
UPDATE_BREW=true
|
|
48
|
-
UPDATE_ALL=false
|
|
49
|
-
;;
|
|
50
|
-
--apt)
|
|
51
|
-
UPDATE_APT=true
|
|
52
|
-
UPDATE_ALL=false
|
|
53
|
-
;;
|
|
54
|
-
--npm)
|
|
55
|
-
UPDATE_NPM=true
|
|
56
|
-
UPDATE_ALL=false
|
|
57
|
-
;;
|
|
58
|
-
--cargo)
|
|
59
|
-
UPDATE_CARGO=true
|
|
60
|
-
UPDATE_ALL=false
|
|
61
|
-
;;
|
|
62
|
-
--pip)
|
|
63
|
-
UPDATE_PIP=true
|
|
64
|
-
UPDATE_ALL=false
|
|
65
|
-
;;
|
|
66
|
-
esac
|
|
67
|
-
done
|
|
68
|
-
|
|
69
|
-
# Homebrew (macOS/Linux)
|
|
70
|
-
if $UPDATE_ALL || $UPDATE_BREW; then
|
|
71
|
-
if command -v brew >/dev/null 2>&1; then
|
|
72
|
-
log_section "Homebrew"
|
|
73
|
-
brew update
|
|
74
|
-
brew upgrade
|
|
75
|
-
brew cleanup
|
|
76
|
-
log_success "Homebrew updated"
|
|
77
|
-
else
|
|
78
|
-
$UPDATE_BREW && log_skip "Homebrew not installed"
|
|
79
|
-
fi
|
|
80
|
-
fi
|
|
81
|
-
|
|
82
|
-
# APT (Debian/Ubuntu)
|
|
83
|
-
if $UPDATE_ALL || $UPDATE_APT; then
|
|
84
|
-
if command -v apt >/dev/null 2>&1; then
|
|
85
|
-
log_section "APT"
|
|
86
|
-
sudo apt update
|
|
87
|
-
sudo apt upgrade -y
|
|
88
|
-
sudo apt autoremove -y
|
|
89
|
-
log_success "APT packages updated"
|
|
90
|
-
else
|
|
91
|
-
$UPDATE_APT && log_skip "APT not available"
|
|
92
|
-
fi
|
|
93
|
-
fi
|
|
94
|
-
|
|
95
|
-
# NPM global packages
|
|
96
|
-
if $UPDATE_ALL || $UPDATE_NPM; then
|
|
97
|
-
if command -v npm >/dev/null 2>&1; then
|
|
98
|
-
log_section "NPM"
|
|
99
|
-
npm update -g
|
|
100
|
-
log_success "NPM packages updated"
|
|
101
|
-
else
|
|
102
|
-
$UPDATE_NPM && log_skip "NPM not installed"
|
|
103
|
-
fi
|
|
104
|
-
fi
|
|
105
|
-
|
|
106
|
-
# Cargo (Rust)
|
|
107
|
-
if $UPDATE_ALL || $UPDATE_CARGO; then
|
|
108
|
-
if command -v cargo >/dev/null 2>&1; then
|
|
109
|
-
log_section "Cargo"
|
|
110
|
-
if command -v cargo-install-update >/dev/null 2>&1; then
|
|
111
|
-
cargo install-update -a
|
|
112
|
-
else
|
|
113
|
-
echo " Install cargo-update for automatic updates: cargo install cargo-update"
|
|
114
|
-
fi
|
|
115
|
-
rustup update stable 2>/dev/null || true
|
|
116
|
-
log_success "Rust toolchain updated"
|
|
117
|
-
else
|
|
118
|
-
$UPDATE_CARGO && log_skip "Cargo not installed"
|
|
119
|
-
fi
|
|
120
|
-
fi
|
|
121
|
-
|
|
122
|
-
# Pip (Python)
|
|
123
|
-
if $UPDATE_ALL || $UPDATE_PIP; then
|
|
124
|
-
if command -v pip3 >/dev/null 2>&1; then
|
|
125
|
-
log_section "Pip"
|
|
126
|
-
pip3 list --outdated --format=json | python3 -c "import json,sys; print('\n'.join([p['name'] for p in json.load(sys.stdin)]))" 2>/dev/null | xargs -n1 pip3 install -U 2>/dev/null || true
|
|
127
|
-
log_success "Pip packages updated"
|
|
128
|
-
else
|
|
129
|
-
$UPDATE_PIP && log_skip "Pip not installed"
|
|
130
|
-
fi
|
|
131
|
-
fi
|
|
132
|
-
|
|
133
|
-
# Chezmoi (dotfiles)
|
|
134
|
-
if $UPDATE_ALL; then
|
|
135
|
-
if command -v chezmoi >/dev/null 2>&1; then
|
|
136
|
-
log_section "Dotfiles"
|
|
137
|
-
chezmoi update --apply=false 2>/dev/null || true
|
|
138
|
-
log_success "Dotfiles checked"
|
|
139
|
-
fi
|
|
140
|
-
fi
|
|
141
|
-
|
|
142
|
-
printf '%b\n' "\n${GREEN}Update complete!${NC}"
|