feat: fold in the portable Claude Code, zsh and git config; add a drift check

Added (all now linked from their live locations):
- home_root/.claude/settings.json. The statusLine command now uses $HOME
  instead of a Linux-only absolute path.
- home_root/.claude/bin/ratecheck and home_root/.claude/skills/australis-design.
- home_config/zsh/claude-config-dir.zsh and home_root/.local/bin/claude-config-dir-init,
  the per-repo Claude Code login helper and its seeding script.
- home_root/.gitconfig and home_config/git/ignore.
- home_root/.zshenv, with the cargo env line guarded so boxes without rust start clean.

link-dotfiles --check reports drift without changing anything: tracked files whose
live copy is no longer a link (stow dry-run conflicts) and links into this repo
that dangle. Exits 1 on drift. Verified against a clean baseline and two planted
drifts, a detached .nanorc and a dangling link.

.mailmap maps every earlier identity to Vuong Hoang: the repo-local 'Your Name'
placeholder config (now removed), host-generated emails, and aider suffixes.

CLAUDE.md: the symlink warning now lists every linked file and points at --check.
README: documents what is and isn't tracked under .claude, the edit rule, and --check.
This commit is contained in:
vh
2026-09-24 09:07:16 -07:00
parent 77225b01d6
commit 7b16be02bf
49 changed files with 2675 additions and 4 deletions
@@ -0,0 +1,20 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" width="64" height="64" fill="none">
<defs>
<linearGradient id="a" x1="0" y1="0" x2="0" y2="1">
<stop offset="0%" stop-color="#a4c4ff"></stop>
<stop offset="45%" stop-color="#42dcd1"></stop>
<stop offset="100%" stop-color="#16b866"></stop>
</linearGradient>
</defs>
<rect x="6" y="48" width="52" height="2" rx="1" fill="#6e7882"></rect>
<path d="M10 48 C 14 22, 22 12, 28 8 L 30 8 C 26 18, 22 32, 22 48 Z" fill="url(#a)" opacity="0.95"></path>
<path d="M24 48 C 30 28, 36 18, 42 12 L 44 12 C 38 22, 34 34, 34 48 Z" fill="url(#a)" opacity="0.7"></path>
<path d="M38 48 C 44 32, 50 24, 56 20 L 58 20 C 52 28, 48 38, 48 48 Z" fill="url(#a)" opacity="0.5"></path>
<circle cx="50" cy="14" r="1.5" fill="#cce7ec"></circle>
<circle cx="46" cy="22" r="1" fill="#cce7ec" opacity="0.7"></circle>
<circle cx="54" cy="26" r="0.8" fill="#cce7ec" opacity="0.5"></circle>
</svg>

After

Width:  |  Height:  |  Size: 978 B

@@ -0,0 +1,19 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 280 64" width="280" height="64" fill="none">
<defs>
<linearGradient id="lg" x1="0" y1="0" x2="0" y2="1">
<stop offset="0%" stop-color="#a4c4ff"></stop>
<stop offset="45%" stop-color="#42dcd1"></stop>
<stop offset="100%" stop-color="#16b866"></stop>
</linearGradient>
</defs>
<g transform="translate(0,0)">
<rect x="6" y="48" width="52" height="2" rx="1" fill="#6e7882"></rect>
<path d="M10 48 C 14 22, 22 12, 28 8 L 30 8 C 26 18, 22 32, 22 48 Z" fill="url(#lg)" opacity="0.95"></path>
<path d="M24 48 C 30 28, 36 18, 42 12 L 44 12 C 38 22, 34 34, 34 48 Z" fill="url(#lg)" opacity="0.7"></path>
<path d="M38 48 C 44 32, 50 24, 56 20 L 58 20 C 52 28, 48 38, 48 48 Z" fill="url(#lg)" opacity="0.5"></path>
<circle cx="50" cy="14" r="1.5" fill="#cce7ec"></circle>
</g>
<text x="76" y="42" font-family="Space Grotesk, Inter, sans-serif" font-size="28" font-weight="600" fill="#cce7ec" letter-spacing="-0.5">australis</text>
</svg>

After

Width:  |  Height:  |  Size: 1.0 KiB