Skip to content

Turn off Claude Code attribution (append-only) - #24

Open
akan72 wants to merge 42 commits into
akan72/uv-python-managementfrom
akan72/claude-attribution
Open

Turn off Claude Code attribution (append-only)#24
akan72 wants to merge 42 commits into
akan72/uv-python-managementfrom
akan72/claude-attribution

Conversation

@akan72

@akan72 akan72 commented May 29, 2026

Copy link
Copy Markdown
Owner

Summary

  • Superseded by merged PR Version shared Claude and Codex configuration #30, which manages Claude attribution through an atomic settings merge while preserving machine-local values.
  • The original append-only installer block is no longer needed and is intentionally excluded from stack #38.

Test Plan

  • Ran merged main in a fresh synthetic home on the Mac mini and verified .attribution.commit and .attribution.pr are empty.
  • Ran tests/claude-sync-settings.sh on the Mac mini; managed values were applied while unmanaged values were preserved.
  • Screenshots: not applicable; validation was CLI-based.

akan72 added 29 commits August 22, 2026 12:48
git's config parser consumes the double quotes and \n escapes in the old
printf wrapper before the shell sees them, so the wrapper executed the
ssh-add output as a command and emitted a bare 'key::' — every commit and
tag failed with 'user.signingKey needs to be set for ssh signing'.

git only takes the first line of defaultKeyCommand output, so a bare
ssh-add -L does the job with no quoting at all. This commit is itself
signed via the fixed command.
Branches on `uname -s` to skip macOS-only steps on Linux:
- Skip hammerspoon/ghostty/vscode/zed symlinks and `brew bundle install`
- Source dotfiles bashrc from $HOME/.bashrc instead of symlinking (the EC2
  user_data appends a secrets block; symlinking would write into the repo)
- Pick delta tarball + SHA256 per OS/arch (Linux SHA marked TODO until first
  install on the EC2 box)
- Only run `nvim PackerSync` if nvim is on PATH

Enables running the install script on the EC2 dev box without breaking the
existing macOS flow.
lsd isn't installed on the EC2 dev box (no brew, dnf doesn't ship it),
and the dotfiles flow doesn't have a good place to install it cross-platform
without dragging in a several-minute cargo compile. Plain ls is fine.
Matches the same pattern nvm uses two lines above. Sourcing an absent file
errors out on shell startup, which is harmless on Mac (rust is installed)
but breaks the prompt on systems without rust.
AL2023 (and likely most non-Fedora Linuxes) don't have neovim in the
default package repos. macOS gets it from the Brewfile. Drops nvim into
$HOME/.local/bin so no root is needed. Placed above the PackerSync block
so the plugin sync that depends on `command -v nvim` actually fires.
v0.10.4 (my earlier guess) doesn't exist as a published release.
v0.9.5 is what's installed on the Mac, and v0.9.x predates the
asset-rename (still uses `nvim-linux64.tar.gz`), so the existing
extraction path stays correct.
zsh-autosuggestions, zsh-syntax-highlighting, and rust may be absent on
boxes where the Brewfile hasn't been applied (Linux dev box) or where
those brew packages aren't installed. Mirror the existing nvm/bun
pattern: source only when the file exists.
Without an argument, sourcing nvm.sh triggers nvm_auto use, which tries
to resolve a version (from .nvmrc or default-alias) and errors with
"N/A: version N/A -> N/A is not yet installed" when neither is set.
--no-use loads nvm without invoking auto-use; users still get the `nvm`
function and can `nvm use <version>` explicitly when they want one.
AL2023 on older/un-updated AMIs ships git 2.40, which lacks
`git clone --revision`. Use git init + fetch --depth 1 <sha> + checkout
instead, which pins the same single commit on any git version.
The cross-platform pass dropped the alias entirely so Linux boxes without
lsd keep a working ls, but that also removed it on macOS where lsd is
installed via the Brewfile. Guard on the binary instead.
- Remove dead config bare-repo alias (symlink approach is used, not bare repo)
- Remove 10 unused Mercurial (hg) aliases
- Fix docker_rmi_dangling quoting (inner single quotes broke the alias)
- Replace dead postgresql@14 PATH with version-agnostic $(brew --prefix postgresql@17)/bin
- Remove dead sops PATH (~/Downloads/sops-3.7.2, no longer in Brewfile)
- Remove hardcoded Python 3.11 framework PATH
- Fix gdm/gdnm aliases: master -> main
- Remove 'export TERM=xterm-256color' (let the terminal set terminfo)
- Remove duplicate NVM init block (also in zshrc)
- Remove duplicate cargo/env source (also in zshrc)
- Remove EDITOR export (zshrc owns it with SSH-aware logic)
…conflicts

- Stop sourcing ~/.bashrc from zshrc (bash-specific syntax can break under zsh);
  inline the shared aliases/exports directly (extracted to shared.sh in follow-up)
- Remove the oh-my-zsh git plugin (custom git aliases shadow every alias it provides)
- Resolve set -o vi vs bindkey -e: drop 'set -o vi' from bashrc so zsh uses emacs
  line editing consistently (was silently overridden anyway)
- Resolve brew node vs nvm: remove brew "node" from Brewfile so nvm manages
  Node versions (per-project .nvmrc), matching the active setup
akan72 added 13 commits August 22, 2026 13:19
- Extract shared aliases, exports, and PATH into shared.sh (single source of truth)
- Source shared.sh (~/.shared.sh) from both bashrc and zshrc instead of
  sourcing bashrc from zshrc
- Consolidate all static PATH entries (Homebrew, Postgres, yarn, bun, ~/.local/bin)
  into one block in shared.sh with a _prepend_path dedup helper, preventing
  PATH from ballooning in nested shells (e.g. tmux)
- Symlink shared.sh -> ~/.shared.sh in assimilate.sh
- Replace Packer bootstrap with lazy.nvim bootstrap pinned to v11.17.5
  (self-installs on first launch)
- Convert all use{} specs to lazy {} specs: run -> build, requires -> dependencies
- Set mapleader before lazy.setup so lazy 'keys' specs bind correctly
- Add priority = 1000 + lazy = false to the gruvbox colorscheme
- Remove the BufWritePost PackerCompile autocmd
- Lazy-load: telescope (keys + :Telescope), fugitive (:Git/:G + <leader>gs),
  markdown-preview (ft = markdown)
- Fix nvim-treesitter ensure_installed: 'help' -> 'vimdoc' (parser renamed)
- Delete nvim/coc-settings.json (unused; config uses lsp-zero + Mason)
- Remove nvim/plugin/ from .gitignore (Packer artifact dir; lazy doesn't use it)
- assimilate.sh: drop the packer clone + PackerSync; lazy self-bootstraps and we
  trigger a headless 'Lazy\! sync' instead

Notes:
- lsp.lua already used 'ts_ls' (not 'tsserver'), so no rename was needed there.
- Kept the vim.tbl_flatten shim in init.lua: the still-pinned old plugin
  versions (e.g. telescope 0.1.1) reference it; remove only after unpinning.
- lazy-lock.json is generated on first interactive launch — run nvim, let lazy
  install, verify (:Lazy), then commit the lockfile.
Generated by the headless Lazy! sync in assimilate.sh; commits match the
pins in plugins.lua and lock the plugins that only pin a branch (LuaSnip,
nvim-cmp, mason, Comment.nvim, ...).
- delta install: detect arch with uname -m. Apple Silicon uses the pinned
  aarch64-apple-darwin tarball; Intel Macs fall back to 'brew install git-delta'
  (delta ships no x86_64-apple-darwin build, so there's no pinned tarball to verify)
- bash_profile: quote $HOME in the .bashrc test/source (handles paths with spaces)
- chmod 600 ~/.gitconfig and chmod 700 ~/.ssh (when present) after symlinking
- .gitignore: block *.pem, *.key, .env, .env.*, credentials.json, *.secret
  from ever being committed
- Add .pre-commit-config.yaml with the gitleaks hook (pinned v8.30.1) for
  secret scanning before commit
- Gitignore Brewfile.lock.json (records per-machine/arch bottle hashes; not
  portable, so not useful to track for reproducibility)
- Remove steps now automated by assimilate.sh (oh-my-zsh, zsh plugins, brew
  bundle, Nerd Font, tpm, Packer)
- Add Ghostty, Zed, and Claude Code install steps
- Replace pinned Nerd Font v2.3.3 reference with a note that brew bundle
  installs it (cask font-hack-nerd-font)
- Add a header noting assimilate.sh handles most setup automatically
Drop the {"context": "Editor && vim_mode == insert"} entry that had no
bindings field — it was incomplete/dead config doing nothing.
- Add ssh/config with secure defaults for Host *: HashKnownHosts, AddKeysToAgent,
  IdentitiesOnly, VisualHostKey, StrictHostKeyChecking ask
- Add a github.com Host block using ~/.ssh/id_ed25519
- Symlink ssh/config -> ~/.ssh/config in assimilate.sh and enforce
  chmod 700 ~/.ssh + chmod 600 ~/.ssh/config (SSH rejects loose permissions)
The tracked config replaces ~/.ssh/config wholesale, which dropped the
existing machine-local Host entry and the UseKeychain setting. Include
config.local (untracked; repo is public) preserves per-machine hosts, and
IgnoreUnknown lets UseKeychain coexist with Linux ssh.
- Add uv/uv.toml with exclude-newer = "7 days" (rolling supply-chain window:
  never resolve a package release younger than a week) and
  python-preference = "managed" so uv owns Python version management
- Symlink uv/uv.toml -> ~/.config/uv/uv.toml in assimilate.sh (also discovered
  via $XDG_CONFIG_HOME)
- Add brew "uv" to the Brewfile and run 'uv python install' during assimilate
  to install a uv-managed CPython on fresh machines
Add an idempotent step to assimilate.sh that sets Claude Code's commit/PR
attribution to empty in ~/.claude/settings.json. It only appends the
"attribution" key when it isn't already present (via jq merge), so existing
local settings are never overridden — matching the 'append if absent' intent.
Makes the attribution-off behavior reproducible on new machines.
@akan72
akan72 changed the base branch from main to akan72/uv-python-management August 22, 2026 19:29
@akan72
akan72 force-pushed the akan72/claude-attribution branch from 3003320 to d8822c2 Compare August 22, 2026 19:29
@akan72
akan72 force-pushed the akan72/uv-python-management branch from 1702334 to 3152f60 Compare August 22, 2026 19:36
@akan72
akan72 force-pushed the akan72/uv-python-management branch 4 times, most recently from c71da39 to 5f56e69 Compare August 22, 2026 19:54
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