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.
45 lines
1.5 KiB
React
45 lines
1.5 KiB
React
// StatusBar — bottom rail. Mono, dense, 24px tall.
|
|
|
|
const StatusBar = ({ branch, problems, position, syntax }) => (
|
|
<div style={sbStyles.root}>
|
|
<div style={sbStyles.left}>
|
|
<span style={sbStyles.cell}>
|
|
<Icon name="git-branch" size={12}/> {branch}
|
|
</span>
|
|
<span style={{ ...sbStyles.cell, color: problems.errors ? '#ff854f' : 'var(--fg-2)' }}>
|
|
<Icon name="x" size={12}/> {problems.errors}
|
|
</span>
|
|
<span style={{ ...sbStyles.cell, color: problems.warnings ? '#ffe14e' : 'var(--fg-2)' }}>
|
|
<Icon name="alert" size={12}/> {problems.warnings}
|
|
</span>
|
|
</div>
|
|
<div style={sbStyles.right}>
|
|
<span style={sbStyles.cell}>{syntax}</span>
|
|
<span style={sbStyles.cell}>UTF-8</span>
|
|
<span style={sbStyles.cell}>LF</span>
|
|
<span style={sbStyles.cell}>{position}</span>
|
|
<span style={{ ...sbStyles.cell, color: '#51e08a' }}>
|
|
<Icon name="circle" size={8}/> live
|
|
</span>
|
|
</div>
|
|
</div>
|
|
);
|
|
|
|
const sbStyles = {
|
|
root: {
|
|
height: 26, flex: '0 0 26px',
|
|
display: 'flex', justifyContent: 'space-between',
|
|
padding: '0 14px',
|
|
background: '#222531',
|
|
borderTop: '1px solid #373b46',
|
|
fontFamily: 'var(--font-mono)', fontSize: 11,
|
|
color: 'var(--fg-2)',
|
|
letterSpacing: '0.03em',
|
|
},
|
|
left: { display:'flex', alignItems:'center', gap: 14 },
|
|
right: { display:'flex', alignItems:'center', gap: 14 },
|
|
cell: { display:'flex', alignItems:'center', gap: 5 },
|
|
};
|
|
|
|
window.StatusBar = StatusBar;
|