Skip to content

Clean up dotfiles: fix themes, remove duplicates, add missing configs - #13

Merged
woud420 merged 5 commits into
feature/ai-contextfrom
fix/dotfiles-cleanup
Jun 26, 2026
Merged

Clean up dotfiles: fix themes, remove duplicates, add missing configs#13
woud420 merged 5 commits into
feature/ai-contextfrom
fix/dotfiles-cleanup

Conversation

@woud420

@woud420 woud420 commented Apr 14, 2026

Copy link
Copy Markdown
Owner

Summary

  • Fix Kitty terminal: custom warm purple theme matching Sway desktop, fix broken include path, swap to Iosevka Nerd Font (Linux only)
  • Add OS-specific theme override in install.sh so Linux gets purple and macOS keeps Catppuccin Mocha
  • Remove duplicate directories (bash/, config/, git/, shell/) that shadowed common/
  • Add machine.md stubs for debian, fedora, alpine (install.sh was warning on these)
  • Guard unprotected source ~/.local/bin/env in .zshrc and .bashrc
  • Add install.sh deployment for .tmux.conf, .inputrc, .gdbinit
  • Move sudo.sh to common/shell-functions/, track sudo-askpass.sh
  • Remove .bak files, include accumulated config updates

Test plan

  • Run ./install.sh --dry-run on macOS and Linux to verify no errors
  • Run ./install.sh on Arch Linux and verify Kitty loads purple theme with Iosevka font
  • Run ./install.sh on macOS and verify Kitty loads Catppuccin Mocha (unchanged)
  • Verify .tmux.conf, .inputrc, .gdbinit are symlinked after install
  • Verify shell functions are copied (not symlinked) after install

🤖 Generated with Claude Code

woud420 and others added 5 commits April 13, 2026 21:34
…ing configs

- Fix Kitty theme: custom warm purple matching Sway/Waybar/Rofi/Mako palette
- Fix Kitty include path (was broken after install.sh copy)
- Replace FiraCode Nerd Font with Iosevka Nerd Font (Linux only)
- Add OS-specific theme override in install.sh (Linux=purple, macOS=Mocha)
- Remove duplicate directories: bash/, config/, git/, shell/ (all shadowed by common/)
- Remove .bak files from version control
- Add machine.md stubs for debian, fedora, alpine
- Guard unprotected source of ~/.local/bin/env in .zshrc and .bashrc
- Add install.sh deployment for .tmux.conf, .inputrc, .gdbinit
- Move sudo.sh to common/shell-functions/, track sudo-askpass.sh
- Add fedora/alpine routing in refresh-machine-state.sh
- Include accumulated config updates (vim, shell-functions, git, tmux)

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Runs on push/PR: spins up Arch (container), Debian (container), and
macOS (native runner) to verify install.sh deploys correctly on each.
Checks symlinks, copies, kitty theme per OS, and font config.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
FiraCode Nerd Font is the preferred font on both platforms.
Installed via ttf-firacode-nerd on Arch.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Adds a fast lint job (shell syntax, shellcheck, git config parse, CoC
JSON validation) that gates the platform tests.

Platform tests now validate configs actually load:
- Kitty: headless parse via kitty +runpy with load_config(), checks for
  bad lines, verifies parsed font/opacity/cursor values
- Vim: loads vimrc in ex mode (vim -e, not -es which breaks line
  continuations), runs PlugInstall --sync
- tmux: starts headless server, verifies config loads
- Git: parses .gitconfig, counts aliases
- Shell: bash -n / zsh -n syntax validation on deployed configs
- Fonts: fc-list -q to verify font actually resolves (not fc-match
  which always falls back)
- Theme: verifies correct colors deployed per OS (purple on Linux,
  Catppuccin Mocha on macOS)

Each platform uploads an evidence artifact with install log, deployed
file listing, theme contents, git aliases, and vim plugin list.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Matches the deployed config on the Arch box. Super+ gives macOS-style
shortcuts on Linux (Sway passes Super to apps), ctrl+shift+ as fallback.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
@woud420
woud420 merged commit 3bc82b7 into feature/ai-context Jun 26, 2026
woud420 added a commit that referenced this pull request Jul 10, 2026
* claude generated ai context files to have better ai-context

* Add install support for AI context files and pacman hook

- Add install_ai_context() to symlink CLAUDE.md, AGENTS.md, MACHINE.md
- Add install_pacman_hook() with __DOTFILES_DIR__ templating
- Run refresh-machine-state.sh during install to bootstrap state file
- Symlink generated machine-state.md to ~/MACHINE-STATE.md

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>

* Add jm-home-box convergence tooling

* Sync dotfiles from personal laptop

* Reconcile laptop dotfiles with cleanup history

* Track Arch Sway config

* Tune desktop keybindings

* Add Arch-only personal-pink kitty background

Override the kitty theme background with a dark plum (#2A1E2E) that
coordinates with the Sway purple/pink accent (#9d5a7f), matching the
jm-home-box machine.toml style = "personal-pink".

Scoped to Arch only: install.sh overlays linux/arch/.config/kitty/*.conf
over the shared common/themes after copying them, guarded by DISTRO=arch.
macOS and other distros keep stock Catppuccin-Mocha (#1E1E2E).

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

* Restore rofi-based sudo askpass helper

The cross-platform askpass script (rofi on Linux, osascript on macOS)
had gone missing on this branch, breaking sudo -A. Restore it from
abfeea3 and track it so it stops disappearing. rofi inherits the system
theme.rasi, matching Sway/Waybar/Mako without any custom styling.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

* Add default git commit template

* Add Neovim-backed editor setup

Install Neovim alongside the existing Vim config and alias vi/vim/vimdiff to nvim when available.

Keep installs copy-based with path-preserving backups and audit logs, and add installer/editor parity checks.

Remove the GNU which alias and replace it with a shell-aware lookup wrapper so aliases are visible.

Tests: make check; make check-editor

* Normalize GitHub URL rewrite config

Keep the GitHub HTTPS-to-SSH rewrite with the rest of the top-level Git settings after the laptop branch merge.

Checks: git diff --check -- common/git/.gitconfig; git config --file common/git/.gitconfig --get-regexp

* Add default git commit template

* not using cursor so removing

* removing examples

* removed old unused prompts

* Sync laptop brew and shell config

Update the macOS Brewfile from the current no-description Homebrew bundle dump.

Add guarded git-ai PATH support for bash/zsh and suppress zsh no-EOL markers.

Skipped the local git-ai Git trace2 socket because it is machine-local daemon state, not portable dotfiles config.

Checks: make check; make check-editor; zsh -n common/shell/.zshrc; bash -n common/shell/.bashrc; git diff --check. Brew bundle check still reports docker-desktop needs install/update.

* Refresh jm-home-box state after 2026-06-13 system update

- machine-state.md: bump kernel, bash, python, node, docker, kubectl,
  terraform; drop go/rust from PATH (not installed); replace stale
  recently-installed list with full AUR explicit-package inventory
- machine.toml: expand aur[] to reflect all explicitly installed AUR
  packages (GPU drivers, nordic theme, swayfx, fonts, apps)

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>

* Install nvim, remove python38; update machine-state accordingly

- Installed neovim 0.12.3 (was in machine.toml but missing from system)
- Removed python38 3.8.20 (legacy, 111 MiB freed)
- machine-state.md: reflect nvim version, drop python38, bump pkg count to 896

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>

* Remove big data stack (cassandra, apache-spark, apache-gremlin-console)

712 MiB freed. Update machine-state.md to reflect removal and drop pkg
count to 892.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>

* Fix installer: copy-only default, path-preserving backups, nvim wiring

- Default COPY_MODE=true; --symlink flag for explicit opt-in (non-negotiable
  constraint from combined plan: no symlinks)
- backup_file() now preserves directory structure under BACKUP_DIR and shows
  destination path in both real and dry-run output
- install_vim_config() expands dry-run output to list every file individually
- Add nvim install step: copies common/nvim/init.vim -> ~/.config/nvim/init.vim
  (bridges to existing vim config; identical behavior on both machines)

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>

* Fix Sway keybindings and NVIDIA Wayland setup

* Track desktop GTK and Waybar theming

* Clean up dotfiles: fix themes, remove duplicates, add missing configs (#13)

* Clean up dotfiles: fix Linux theme/fonts, remove duplicates, add missing configs

- Fix Kitty theme: custom warm purple matching Sway/Waybar/Rofi/Mako palette
- Fix Kitty include path (was broken after install.sh copy)
- Replace FiraCode Nerd Font with Iosevka Nerd Font (Linux only)
- Add OS-specific theme override in install.sh (Linux=purple, macOS=Mocha)
- Remove duplicate directories: bash/, config/, git/, shell/ (all shadowed by common/)
- Remove .bak files from version control
- Add machine.md stubs for debian, fedora, alpine
- Guard unprotected source of ~/.local/bin/env in .zshrc and .bashrc
- Add install.sh deployment for .tmux.conf, .inputrc, .gdbinit
- Move sudo.sh to common/shell-functions/, track sudo-askpass.sh
- Add fedora/alpine routing in refresh-machine-state.sh
- Include accumulated config updates (vim, shell-functions, git, tmux)

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

* Add CI workflow to test install.sh across Arch, Debian, and macOS

Runs on push/PR: spins up Arch (container), Debian (container), and
macOS (native runner) to verify install.sh deploys correctly on each.
Checks symlinks, copies, kitty theme per OS, and font config.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

* Use FiraCode Nerd Font on Linux (same as macOS)

FiraCode Nerd Font is the preferred font on both platforms.
Installed via ttf-firacode-nerd on Arch.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

* Rewrite CI with deep config validation, not just file existence checks

Adds a fast lint job (shell syntax, shellcheck, git config parse, CoC
JSON validation) that gates the platform tests.

Platform tests now validate configs actually load:
- Kitty: headless parse via kitty +runpy with load_config(), checks for
  bad lines, verifies parsed font/opacity/cursor values
- Vim: loads vimrc in ex mode (vim -e, not -es which breaks line
  continuations), runs PlugInstall --sync
- tmux: starts headless server, verifies config loads
- Git: parses .gitconfig, counts aliases
- Shell: bash -n / zsh -n syntax validation on deployed configs
- Fonts: fc-list -q to verify font actually resolves (not fc-match
  which always falls back)
- Theme: verifies correct colors deployed per OS (purple on Linux,
  Catppuccin Mocha on macOS)

Each platform uploads an evidence artifact with install log, deployed
file listing, theme contents, git aliases, and vim plugin list.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

* Add super+ keybindings to Linux kitty config with ctrl+shift fallbacks

Matches the deployed config on the Arch box. Super+ gives macOS-style
shortcuts on Linux (Sway passes Super to apps), ctrl+shift+ as fallback.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

---------

Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

* Consolidate on install.sh as the single install tool

scripts/dotfiles.py and install.sh overlapped on the copy step but split
responsibilities: only install.sh could bootstrap a machine (packages,
vim plugins, CoC, fzf), while only dotfiles.py knew about the Arch
desktop files. One tool is enough:

- install.sh gains install_desktop_configs: on Arch, everything under
  linux/arch/.config/ is copied into ~/.config/ preserving relative
  paths (sway, waybar, gtk-3.0/4.0, and any future tool configs),
  with the kitty subdir still applied as theme overlays.
- Remove scripts/dotfiles.py, common/bin/dotfiles, and
  machines/jm-home-box/machine.toml (nothing consumes machine.toml
  anymore; OS/distro detection covers the real per-machine differences).
- Remove the dotfiles-* Makefile targets and rewrite the README
  convergence section around the single entry point.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>

* Cherry-pick stranded fixes: CoC fallback, git hooks, rofi/mako, askpass

From bugfix/coc-nvim-ci-error: extract a shared compile_coc_nvim helper
(npm ci with lockfile, npm install fallback, non-fatal on failure) used
by both the vim and nvim paths, replacing two duplicated bare `npm ci`
blocks; lightweight typescript-vim + vim-jsx-typescript plugins with
polyglot's heavy TS syntax disabled; git-lfs filter in .gitconfig.

From the rescued home-box commit 3dabbca: personal global git hooks
(pre-commit blocks secrets/conflict markers/oversized files, pre-push
runs a configured repo check; both delegate to repo hooks like .husky
first), installed copy-based to ~/.config/git/hooks with core.hooksPath
set by the installed .gitconfig, plus a make install-git-hooks target.

From feature/add-linux-box: the mako notification config, rofi
theme.rasi (used by the rofi sudo-askpass prompt), and the Arch README
- picked up automatically by install_desktop_configs.

sudo askpass: the installer now copies scripts/sudo-askpass.sh to
~/.local/bin/sudo-askpass, and sudo.sh points SUDO_ASKPASS there
instead of hardcoding ~/workspace/dotfiles (which was wrong on any
machine with a different checkout path).

fix/charlie-lab-laptop reviewed for leverage: its only unique content
is work-laptop machine captures and Brewfile entries already present
or out of scope; nothing further taken.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>

* Close the gaps: local overrides, SSH config, honest docs, Makefile cleanup

- Machine-local override hooks now actually exist: ~/.bashrc.local and
  ~/.zshrc.local are sourced at the end of the shell configs (the README
  promised this but nothing implemented it), and .gitconfig gains an
  [include] of ~/.gitconfig.local that wins over shared values - the
  sanctioned home for tool-appended blocks (git-ai PATH/trace2) that
  copy-based reinstalls would otherwise clobber.
- common/ssh/config is finally installed: copied to ~/.ssh/config.dotfiles
  and Include'd from ~/.ssh/config so machine-local host entries keep
  precedence, with IgnoreUnknown UseKeychain so the macOS-only option is
  harmless on Linux.
- Makefile: the broken legacy section is gone (duplicate darwin target,
  misspelled brews rule with an Intel-only path, backup-bash calling a
  script that does not exist, no-op profile-source, misleading stow-*
  aliases, unlink of files nothing installs) and help now matches the
  targets that exist.
- README: real clone URL, master instead of main in the raw one-liner,
  shell-function table split into what works vs the disabled stubs that
  are deliberately kept for incremental restore, kubectl section trimmed
  to the k alias and kctx, accurate git-hooks and AI-context sections.
- install.sh closing tips no longer advertise sshdot / k get p, which
  do not exist.
- scripts/update_cursor_tools.py removed (cursor was dropped earlier).
- The two-agent convergence plan artifacts from jm-home-box are archived
  under docs/convergence/ (combined-plan.md and inputs) with
  docs/reference/color-linux-box.md kept as a container-theming example,
  and docs/machine-convergence-plan.md marked historical with the
  decisions that supersede it.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>

* Fix all 34 findings from adversarial review

Installer correctness:
- First-run no longer aborts: vim/nvim PlugInstall get </dev/null and a
  log_warning guard (a fresh machine hit E185 from the not-yet-installed
  colorscheme, hung at press-ENTER or died under set -e, silently
  skipping the nvim bridge, fzf, and AI-context steps); appearance.vim
  now uses silent! colorscheme.
- compile_coc_nvim's subshell is now the if-condition, so an npm failure
  reaches the intended warning instead of tripping set -e (the previous
  guard was dead code).
- --dry-run no longer creates ~/.config/{git,kitty,htop} and logs the
  real backup destination; install_vim_config dedupes its dry-run branch
  (settings.vim was missing from the log) and drops a duplicated nvim
  init.vim install; minimal mode skips plugin installation; fzf install
  no longer aborts when ~/.fzf exists or the network fails; stale
  --symlink usage comment removed.
- SSH: the Include is prepended to ~/.ssh/config instead of appended -
  an Include after a Host block only applies to that host, and
  IgnoreUnknown must parse before any UseKeychain reaches Linux openssh.

Shell configs:
- .bash_profile guards ~/.local/bin/env like the other rc files.
- bash prompts wrap color escapes in \[ \] (raw escapes corrupt readline
  line wrapping); single path_prepend definition moved before
  shell-function loading with one comprehensive call (the merge had left
  a raw duplicate block that re-prepended on every source).
- .zshrc path_prepend includes ~/.local/bin; macos-clipboard.sh gets a
  shebang (shellcheck error severity would fail CI).
- pre-commit hook: mapfile -d replaced with a bash-3.2-portable read
  loop (macOS system bash) and ======= alone no longer false-positives
  as a conflict marker.

CI workflow:
- Fixed invalid YAML in the install.sh syntax step (plain scalar with a
  colon - GitHub would have rejected the whole file).
- set -o pipefail on the three install steps (| tee masked failures),
  personal-pink assertion now enforcing, debian/macos jobs assert the
  AI-context files, lint job runs apt-get update before installing zsh.

Repo hygiene and docs:
- Untracked generated linux/arch/ai-context/machine-state.md (gitignore
  already declared it); deleted orphaned root .dircolors,
  .dircolors-catpuccin, .gnu_aliases, .profile, stale
  linux/common/current-theme.conf, cursor .gitignore entry, and the
  unused hashicorp tap.
- README: working remote-install commands, dropped nonexistent v/kns,
  package list matches the Brewfile; linux/arch/README.md now describes
  the copy-based install.sh flow, the real kitty overlay (#2A1E2E), and
  drops stale AMD GPU claims (the box runs NVIDIA);
  quick-install.sh uses copies instead of symlinks per policy.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>

* CI: use bash shell in container jobs, writable evidence dir

Debian's default step shell is dash, which rejects set -o pipefail
(GitHub's explicit bash shell runs with -eo pipefail built in), and
/tmp/evidence was created by root while testuser writes the report.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>

* Fix all 25 findings from second adversarial review

The big two:
- Arch installs work again: linux/arch/packages.list still listed exa,
  delta, and neofetch (renamed/removed from the repos) and swayfx (AUR
  only), so a default ./install.sh on Arch aborted before installing
  anything. Renamed to eza/git-delta, moved swayfx to a documented AUR
  section, added ttf-firacode-nerd (the configs require it; also added
  the font cask to the Brewfile), and the pacman step now uses --needed
  with a warning guard instead of aborting the whole install.
- vim plugins actually install now: the round-1 `</dev/null` guard made
  `vim +PlugInstall` deterministically die reading input, so vim-only
  machines (every Linux box - neovim is Brewfile-only) silently got zero
  plugins. install.sh now pre-seeds vim-plug and uses the ex-mode recipe
  (vim -e -N -u vimrc --not-a-term -c 'PlugInstall --sync'), verifies
  plugged/ is non-empty, and compile_coc_nvim no longer claims success
  when it skipped a half-cloned coc.nvim. Verified: 10/10 plugins land
  in a fresh HOME (was 0/10).

Hooks (all verified by staged-file reproduction):
- Conflict-marker and generated-file checks no longer silently pass
  files larger than the pipe buffer (grep -q early-exit SIGPIPEs git
  show, which pipefail turned into "no match"); single full-input grep
  with captured output instead.
- basename -- handles dash-leading filenames (a staged "-sneaky.pem"
  bypassed the secret check); secret list extended (id_dsa/ecdsa/
  ed25519_sk, *.p8, *.jks, *.keystore, .netrc, .pgpass).
- Lockfiles (Cargo.lock, poetry.lock, yarn.lock, ...) are allowlisted -
  their generated-by headers blocked every lockfile commit in every repo.
- Repo-hook delegation (.husky etc.) gets an explicit trust switch:
  git config jm.hooks.runRepoHooks false disables running
  repo-controlled code in untrusted clones (default stays on).

Portability and configs:
- .zshrc shell-functions glob gets the (N) null-glob qualifier (zsh
  aborted mid-rc when the dir was empty, skipping kctx and .zshrc.local).
- .gnu_aliases only evals dircolors when a real binary exists (macOS
  without coreutils printed an error on every shell startup).
- Sway config had a literal @sysconfdir@ autotools placeholder, so
  /etc/sway/config.d drop-ins never loaded.
- Waybar docker/k8s modules poll every 30s (was 10s) and only when
  dockerd runs / a kube-context is set (exec-if), instead of
  unconditionally at every desktop startup.
- Shared ssh github.com block drops IdentitiesOnly so a machine missing
  the pinned key falls back to agent keys instead of bricking GitHub
  access; ForwardAgent trade-off documented in the README.
- Arch kitty overlay goes through install_file (backup + audit + dry-run
  symmetry) and manjaro is treated like arch everywhere.

Docs made truthful: shell-functions README rewritten around the 5 active
files vs 11 disabled stubs, CLAUDE.md no longer points at a
~/MACHINE-STATE.md nothing creates (and drops the machine-specific repo
path), color-linux-box.md gets the historical status header, arch README
documents the opt-in pacman hook substitution, quick-install wording
matches what it does, refresh-machine-state.sh detects alpine.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>

* rc files end with explicit if-blocks so sourcing reports status 0

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>

* Fix all 33 findings from third adversarial review

The big ones:
- vim plugins genuinely install on vim-only machines now: vim-plug
  cannot run in ex mode (E31, installs nothing - the nvim pass on this
  laptop had been masking it by sharing ~/.vim/plugged), so headless
  installs allocate a pty via script(1) (BSD and util-linux forms).
  When nvim is present the vim invocation is skipped entirely; both
  paths report installed-vs-declared plugin counts instead of a
  non-empty-dir guess, vim-plug downloads atomically (a truncated
  plug.vim could previously never heal), and compile_coc_nvim warns
  when coc.nvim was requested but never cloned. Verified: 9/9 plugins
  in a fresh vim-only HOME.
- install_file replaces symlinked ancestors that resolve into the repo:
  a legacy ~/.vim -> repo/.vim symlink previously made the installer
  DELETE the repo's own files and copy sources onto themselves - this
  is the exact migration path both real machines could hit. Verified
  against a repo copy: symlink becomes a real dir, repo untouched.
- quick-install.sh / ssh-copy-dotfiles.sh / minimal-bashrc.sh installed
  a gitconfig whose core.hooksPath pointed at a directory they never
  populated, silently disabling ALL git hooks (including repo husky
  hooks) on machines set up that way. All three now install the hooks;
  quick-install also detects SSH sessions for server configs.
- install_ai_context no longer clobbers a user-curated ~/.claude/
  CLAUDE.md (seeded only when absent), skips minimal mode along with
  the sudo-askpass helper, and covers rhel/centos.

Hooks: the jm.hooks.runRepoHooks off-switch now honors git boolean
spellings (0/no/off previously failed open on the security control);
documented in both READMEs.

Desktop: rofi theme actually loads (new config.rasi - nothing
referenced theme.rasi), sway screenshot binding invokes grim/slurp
instead of a nonexistent sshot (grim+slurp added to packages.list),
sway's literal @sysconfdir@ include fixed, spotify.sh paused/stopped
branches were command invocations not assignments (+bash shebang for
its [[ ]]), storage-workspace.sh no longer hardcodes /home/jm and
hides cleanly when the mount is absent, dead files removed
(sway/key-bindings, waybar cpu-graph.sh, docker-k8s.py - nothing
referenced them), GTK's Nordic theme noted as AUR, pacman hook runs
refresh as the owning user via runuser (root-owned repo files
otherwise), version_of passes multi-flag commands correctly.

Also: neovim added to all Linux package lists (README promised
Neovim-first; only the Brewfile delivered it), ui-features.vim is
actually sourced (installed but dead), .bashrc.server gets the
.bashrc.local hook, nvim dry-run preview matches the real steps,
install.sh header tells the truth, README file table covers vim/nvim/
askpass, minimal-mode behavior documented, combined-plan.md gets its
historical banner.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>

---------

Co-authored-by: Claude Opus 4.5 <noreply@anthropic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant