Skip to content

fix: dotfiles audit β€” symlink bug, remove opencode/rust, add neotest, update docs - #1

Merged
jcleal merged 14 commits into
mainfrom
fix/common-bin-symlinks-and-docs
Jul 31, 2026
Merged

fix: dotfiles audit β€” symlink bug, remove opencode/rust, add neotest, update docs#1
jcleal merged 14 commits into
mainfrom
fix/common-bin-symlinks-and-docs

Conversation

@jcleal

@jcleal jcleal commented Jul 31, 2026

Copy link
Copy Markdown
Member

Summary

  • Fix configure-common double-path symlink bug β€” $(PWD)/$$f where $$f is already absolute produced broken symlinks written back into the repo dir; ~/bin converted from a repo symlink to a real directory
  • Commit resurrect-claude.sh and its two test scripts β€” load-bearing (called by tmux.conf resurrect hook and Ctrl+B A popup), were untracked
  • Wire tmux.conf resurrect hook and keybind for resurrect-claude.sh
  • Remove Rust β€” not used on this machine; strips rust-analyzer, rustfmt, LSP config, DAP filetype, and treesitter grammar
  • Remove opencode β€” moving away from it; strips Makefile targets, tmux resurrect entry, Neovim toggleterm integration, and all docs references
  • Install imgcat via configure-iterm2 β€” symlinks from iTerm2 app bundle into ~/bin/ on fresh installs
  • Add neotest with Go, Python, and Jest adapters; dynamic jest config resolution (ts/js/json), venv-aware python detection
  • Update docs/tools.md β€” add kubectl, ripgrep, custom bin scripts section, neotest; close all open gap analysis items

Test plan

  • make configure-common β€” verify ~/bin/ symlinks resolve correctly, no broken links
  • Open a Go/Python/TS test file in Neovim β€” <leader>tt runs nearest test
  • Confirm Ctrl+B A in tmux opens the resurrect-claude popup
  • Confirm terraform version works
  • Confirm no opencode or rust references remain in Neovim

πŸ€– Generated with Claude Code

Jordan Cleal and others added 14 commits July 29, 2026 12:41
…Makefile

- Remove broken tmux plugin gitlinks (.config/tmux/plugins/*) β€” already gitignored,
  TPM handles runtime install; .gitmodules had no entries for them
- Remove dead sort-mail.sh symlink β€” points to email-manager repo which may not be present
- Set HOMEBREW_PREFIX explicitly in .zshenv so zsh-syntax-highlighting and fzf
  bindings load reliably on a fresh macOS install
- Fix GREP_COLOR β†’ GREP_COLORS (deprecated variable)
- Remove duplicate HISTFILE export from .zshrc β€” .zshenv is canonical
- Rename git() "switch" case β†’ "gh-switch" to avoid colliding with `git switch`
- Fix `while read p` β†’ `while IFS= read -r p` in aws profiles
- Replace GNU-only `realpath --relative-to` in Makefile with pure shell string op
- Add test-opencode to .PHONY in Makefile
- CI: add .config/common/aliases to path filter and shellcheck step
- CI: remove `|| true` from zsh config shellcheck (failures were silently swallowed)
- CI: add tests job that runs make test-opencode on shell changes

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
…, dead code

- Fix HOMEBREW_PREFIX to use uname -m check (arm64 vs x86_64) β€” was hardcoded to
  /opt/homebrew which silently breaks on Intel Macs
- Add shellcheck disable directives so CI lint steps actually pass:
  - .zshrc: SC1009/SC1036/SC1072/SC1073 (zsh extended glob qualifier)
  - aliases: SC2154 ($os from .zshenv), SC2162 (zsh read syntax), SC2139 (intentional
    expand-at-definition aliases), SC2012 (ls -t for mtime sort)
  - test-opencode.sh: SC1071 (zsh shebang)
  - lock.sh: SC2034 (colour vars kept for reference)
- Fix SC2046 in polybar-xautolock-status.sh and xautolock-start.sh: quote $(<pidFile)
- Fix SC2164 in git clone alias: cd || return 1
- Remove dead _wt_pick_add() function (was never called after wt() refactor)

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
docs/tools.md covers every tool, CLI, LSP, formatter, linter, debug
adapter, Neovim plugin, and binary in the repo β€” with identified gaps
(missing Go debugger, unwired C++ formatter, no kubectl/terraform/act
install targets, no test runner, etc). Linked from README.

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

Makefile:
- Add install-terraform, install-kubectl, install-ripgrep, install-act,
  install-ansible-lint β€” all wired into install + setup aggregates

Aliases:
- Add k=kubectl shorthand

Neovim submodule bumped to include:
- delve + nvim-dap-go (Go debugger)
- clang_format wired in conform (C/C++)
- psscriptanalyzer in mason + lint (PowerShell)
- yamllint in mason + lint (generic YAML)
- rust_analyzer with clippy

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

Both are in mason.lua ensure_installed and auto-install when Neovim first
opens. Mason's bin dir is on PATH via .zshenv so they're available system-wide.
Keeping Makefile install targets for these was redundant duplication.

Added comments to the install/setup aggregates explaining the intentional omission.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Documents the Makefile/Mason boundary, what belongs here vs not,
Neovim submodule workflow, shell file responsibilities, and Makefile
conventions. Ensures future Claude Code sessions stay aligned with
the simplicity-first design goal.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Co-Authored-By: Jordan Cleal <jordan.cleal@gmail.com>
Co-Authored-By: Jordan Cleal <jordan.cleal@gmail.com>
…surrect-claude scripts + update docs

- Makefile: remove redundant $(PWD)/ prefix in configure-common loop β€” $$f is already
  absolute, so $(PWD)/$$f produced broken double-path symlinks written into the repo dir
- Remove ~/bin -> repo symlink; ~/bin is now a real directory so configure-common
  writes symlinks there correctly without polluting the repo working tree
- Commit resurrect-claude.sh + its two test scripts β€” load-bearing, referenced by
  tmux.conf resurrect hook and popup keybind A
- docs/tools.md: add kubectl + ripgrep to their respective tables, add Custom Shell
  Scripts section documenting all bin/*.sh scripts, record fixes in gap analysis

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
- Add @resurrect-processes inline strategy for claude and opencode
- Add post-restore hook calling resurrect-claude.sh
- Bind Ctrl+B A to AI session inspector popup

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Rust is not used on this machine. Removes rust-analyzer, rustfmt, rust_analyzer LSP,
Rust DAP config, and Rust treesitter grammar. Also removes Rust from docs/tools.md.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Remove opencode install/configure Makefile targets, resurrect-claude.sh AI_PROCS
entry, tmux.conf resurrect-processes entry, Neovim toggleterm integration, and all
docs references. Also bump neovim submodule.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Bump neovim submodule, update tools.md: add neotest to Language-Specific
table, fix toggleterm description, move neotest gap to Previously fixed.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
@jcleal
jcleal merged commit c6b1748 into main Jul 31, 2026
2 of 4 checks passed
@jcleal
jcleal deleted the fix/common-bin-symlinks-and-docs branch July 31, 2026 00:26
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