claude updates

This commit is contained in:
Miguel Palhas
2026-07-05 16:28:20 +01:00
parent 75198e4429
commit eab82e8ff0
4 changed files with 52 additions and 20 deletions
+36 -9
View File
@@ -1,32 +1,34 @@
#!/bin/bash
#!/usr/bin/env bash
# NixOS has no /bin/bash; use env so the shebang resolves on all hosts.
input=$(cat)
# Extract values from JSON input
MODEL=$(echo "$input" | jq -r '.model.display_name // "Claude"')
DIR=$(echo "$input" | jq -r '.workspace.current_dir // "~"')
DIR_NAME="${DIR##*/}"
CONTEXT_USED=$(echo "$input" | jq -r '.context_window.used_percentage // 0')
COST=$(echo "$input" | jq -r '.cost.total_cost_usd // 0')
# Get git repo root path (abbreviated with ~) and branch/PR info
# Machine hostname (bash sets HOSTNAME; fall back to /etc/hostname)
HOST="${HOSTNAME:-$(cat /etc/hostname 2>/dev/null || echo host)}"
# Git repo root (abbreviated ~/projects -> p/) and branch/PR info
GIT_INFO=""
REPO_PATH=""
if git -C "$DIR" rev-parse --git-dir > /dev/null 2>&1; then
REPO_ROOT=$(git -C "$DIR" rev-parse --show-toplevel 2>/dev/null)
# For worktrees, get the main repo root instead of the worktree path
# For worktrees, use the main repo root instead of the worktree path
MAIN_GIT_DIR=$(git -C "$DIR" rev-parse --git-common-dir 2>/dev/null)
if [ -n "$MAIN_GIT_DIR" ] && [[ "$MAIN_GIT_DIR" == /* ]]; then
REPO_ROOT=$(dirname "$MAIN_GIT_DIR")
fi
# Abbreviate ~/projects/ to p/
REPO_PATH=" | ${REPO_ROOT/#$HOME\/projects\//p/}"
REPO_PATH="${REPO_ROOT/#$HOME\/projects\//p/}"
BRANCH=$(git -C "$DIR" branch --show-current 2>/dev/null)
if [ -n "$BRANCH" ]; then
PR_NUMBER=$(GIT_DIR="$DIR/.git" GIT_WORK_TREE="$DIR" gh pr view --json number -q '.number' 2>/dev/null)
if [ -n "$PR_NUMBER" ]; then
GIT_INFO=" | $BRANCH (#$PR_NUMBER)"
GIT_INFO="$BRANCH (#$PR_NUMBER)"
else
GIT_INFO=" | $BRANCH"
GIT_INFO="$BRANCH"
fi
fi
fi
@@ -34,4 +36,29 @@ fi
# Format cost (force C locale so the decimal separator is always ".")
COST_FMT=$(LC_NUMERIC=C printf "%.2f" "$COST")
echo "YOLO$REPO_PATH$GIT_INFO | [$MODEL] | \$$COST_FMT | ${CONTEXT_USED}%"
# Colors
RESET=$'\033[0m'
C_HOST=$'\033[1;36m' # bold cyan — distinguishes the machine
C_PATH=$'\033[32m' # green
C_BRANCH=$'\033[33m' # yellow
C_MODEL=$'\033[35m' # magenta
C_COST=$'\033[32m' # green
SEP=$'\033[90m | \033[0m' # dim separator
# Context % colored by fill level: green < 50, yellow < 80, red >= 80
CTX_INT=${CONTEXT_USED%.*}; CTX_INT=${CTX_INT:-0}
if [ "$CTX_INT" -ge 80 ] 2>/dev/null; then
C_CTX=$'\033[31m'
elif [ "$CTX_INT" -ge 50 ] 2>/dev/null; then
C_CTX=$'\033[33m'
else
C_CTX=$'\033[32m'
fi
out="${C_HOST}${HOST}${RESET}"
[ -n "$REPO_PATH" ] && out="${out}${SEP}${C_PATH}${REPO_PATH}${RESET}"
[ -n "$GIT_INFO" ] && out="${out}${SEP}${C_BRANCH}${GIT_INFO}${RESET}"
out="${out}${SEP}${C_MODEL}[${MODEL}]${RESET}"
out="${out}${SEP}${C_COST}\$${COST_FMT}${RESET}"
out="${out}${SEP}${C_CTX}${CONTEXT_USED}%${RESET}"
printf '%s\n' "$out"