@umang-boss/claudemon 2.1.1 → 2.1.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/package.json +1 -1
- package/statusline/buddy-status.sh +39 -16
package/package.json
CHANGED
|
@@ -109,11 +109,30 @@ if [ "$ENCOUNTER_CYCLE" -ge 3 ]; then
|
|
|
109
109
|
ENCOUNTER_VISIBLE=false
|
|
110
110
|
fi
|
|
111
111
|
|
|
112
|
-
# Sprite jitter:
|
|
113
|
-
#
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
112
|
+
# Sprite jitter: idle for 15-30s (random), then quick wiggle, then idle again
|
|
113
|
+
# Walk through variable-length cycles to find which cycle we're in
|
|
114
|
+
JITTER_OFFSET=0
|
|
115
|
+
_jt_elapsed=0
|
|
116
|
+
_jt_cycle=0
|
|
117
|
+
while true; do
|
|
118
|
+
# Each cycle gets a pseudo-random length between 15-30s based on cycle number
|
|
119
|
+
_jt_len=$(( 15 + ( (_jt_cycle * 13 + 7) % 16 ) ))
|
|
120
|
+
if [ $(( _jt_elapsed + _jt_len )) -gt $(( NOW_SEC % 3600 )) ]; then
|
|
121
|
+
# We're in this cycle — find position within it
|
|
122
|
+
_jt_pos=$(( (NOW_SEC % 3600) - _jt_elapsed ))
|
|
123
|
+
# Wiggle in the last 3 seconds: left, back, left
|
|
124
|
+
if [ "$_jt_pos" -eq $(( _jt_len - 3 )) ]; then
|
|
125
|
+
JITTER_OFFSET=1
|
|
126
|
+
elif [ "$_jt_pos" -eq $(( _jt_len - 2 )) ]; then
|
|
127
|
+
JITTER_OFFSET=0
|
|
128
|
+
elif [ "$_jt_pos" -eq $(( _jt_len - 1 )) ]; then
|
|
129
|
+
JITTER_OFFSET=2
|
|
130
|
+
fi
|
|
131
|
+
break
|
|
132
|
+
fi
|
|
133
|
+
_jt_elapsed=$(( _jt_elapsed + _jt_len ))
|
|
134
|
+
_jt_cycle=$(( _jt_cycle + 1 ))
|
|
135
|
+
done
|
|
117
136
|
|
|
118
137
|
|
|
119
138
|
# ── Terminal width ──────────────────────────────────────────
|
|
@@ -334,7 +353,7 @@ RIGHT_PAD=$(( COLS - ART_W - RIGHT_MARGIN ))
|
|
|
334
353
|
SPRITE_PAD=$(( COLS - ART_W - RIGHT_MARGIN - JITTER_OFFSET ))
|
|
335
354
|
[ "$SPRITE_PAD" -lt 0 ] && SPRITE_PAD=0
|
|
336
355
|
|
|
337
|
-
# Build left array — line 1: model+context, line 2: update
|
|
356
|
+
# Build left array — line 1: model+context, line 2: update notification
|
|
338
357
|
LEFT_LINES=()
|
|
339
358
|
LEFT_LINES+=("$LEFT_1") # line 1: model · context
|
|
340
359
|
LEFT_LINES+=("$LEFT_2") # line 2: update notification (or empty)
|
|
@@ -349,19 +368,23 @@ LEFT_COUNT=${#LEFT_LINES[@]}
|
|
|
349
368
|
FULL_SPACER=""
|
|
350
369
|
for (( s=0; s<SPRITE_PAD; s++ )); do FULL_SPACER+="$B"; done
|
|
351
370
|
|
|
352
|
-
# ── Output name line
|
|
353
|
-
|
|
354
|
-
|
|
371
|
+
# ── Output name line — speech left-aligned, name right-aligned ──
|
|
372
|
+
INFO_W=${#INFO_LINE}
|
|
373
|
+
SPEECH_OUT=""
|
|
374
|
+
SPEECH_OUT_W=0
|
|
375
|
+
SPEECH_LEFT_PAD=50
|
|
355
376
|
if [ -n "$SPEECH" ]; then
|
|
356
|
-
|
|
357
|
-
|
|
377
|
+
SPEECH_PREFIX=""
|
|
378
|
+
for (( s=0; s<SPEECH_LEFT_PAD; s++ )); do SPEECH_PREFIX+="$B"; done
|
|
379
|
+
SPEECH_OUT="${SPEECH_PREFIX}${SPEECH_COLOR}${SPEECH}${NC}"
|
|
380
|
+
SPEECH_OUT_W=$(( ${#SPEECH} + SPEECH_LEFT_PAD ))
|
|
358
381
|
fi
|
|
359
382
|
|
|
360
|
-
|
|
361
|
-
[ "$
|
|
362
|
-
|
|
363
|
-
for (( s=0; s<
|
|
364
|
-
echo "${
|
|
383
|
+
NAME_GAP=$(( COLS - SPEECH_OUT_W - INFO_W - RIGHT_MARGIN ))
|
|
384
|
+
[ "$NAME_GAP" -lt 1 ] && NAME_GAP=1
|
|
385
|
+
NAME_GAP_STR=""
|
|
386
|
+
for (( s=0; s<NAME_GAP; s++ )); do NAME_GAP_STR+="$B"; done
|
|
387
|
+
echo "${SPEECH_OUT}${NAME_GAP_STR}${INFO_LINE}"
|
|
365
388
|
|
|
366
389
|
# ── Output sprite lines (right-aligned with jitter, left content merged) ──
|
|
367
390
|
for (( i=0; i<SPRITE_COUNT; i++ )); do
|