@umang-boss/claudemon 2.1.0 → 2.1.2

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 CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@umang-boss/claudemon",
3
- "version": "2.1.0",
3
+ "version": "2.1.2",
4
4
  "description": "Pokemon coding companion for Claude Code — Gotta code 'em all!",
5
5
  "type": "module",
6
6
  "main": "dist/server.mjs",
@@ -109,13 +109,31 @@ if [ "$ENCOUNTER_CYCLE" -ge 3 ]; then
109
109
  ENCOUNTER_VISIBLE=false
110
110
  fi
111
111
 
112
- # Sprite jitter: shift 0-2 spaces left/right, changes every 2s
113
- JITTER_SEED=$(( NOW_SEC / 2 ))
114
- # Simple pseudo-random from timestamp: produces 0,1,2 pattern
115
- JITTER_OFFSET=$(( (JITTER_SEED * 7 + 3) % 5 - 2 ))
116
- # Clamp to -2..+2
117
- [ "$JITTER_OFFSET" -lt -2 ] && JITTER_OFFSET=-2
118
- [ "$JITTER_OFFSET" -gt 2 ] && JITTER_OFFSET=2
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
136
+
119
137
 
120
138
  # ── Terminal width ──────────────────────────────────────────
121
139
  # Cross-platform: Linux uses /proc, macOS uses tty, Windows uses $COLUMNS
@@ -330,11 +348,10 @@ RIGHT_MARGIN=4
330
348
  RIGHT_PAD=$(( COLS - ART_W - RIGHT_MARGIN ))
331
349
  [ "$RIGHT_PAD" -lt 0 ] && RIGHT_PAD=0
332
350
 
333
- # Jittered padding — only for sprite lines, name line stays fixed
334
- JITTERED_MARGIN=$(( RIGHT_MARGIN + JITTER_OFFSET ))
335
- [ "$JITTERED_MARGIN" -lt 2 ] && JITTERED_MARGIN=2
336
- JITTER_PAD=$(( COLS - ART_W - JITTERED_MARGIN ))
337
- [ "$JITTER_PAD" -lt 0 ] && JITTER_PAD=0
351
+ # Jittered padding for sprite lines only (name line uses fixed RIGHT_PAD)
352
+ # JITTER_OFFSET is 0-2, adding to margin pushes sprite left
353
+ SPRITE_PAD=$(( COLS - ART_W - RIGHT_MARGIN - JITTER_OFFSET ))
354
+ [ "$SPRITE_PAD" -lt 0 ] && SPRITE_PAD=0
338
355
 
339
356
  # Build left array — line 1: model+context, line 2: update notice (if any)
340
357
  LEFT_LINES=()
@@ -347,9 +364,9 @@ while [ ${#LEFT_LINES[@]} -lt "$TOTAL_LINES" ]; do
347
364
  done
348
365
  LEFT_COUNT=${#LEFT_LINES[@]}
349
366
 
350
- # ── Build full right-side spacer (jittered for sprite animation) ──
367
+ # ── Build full right-side spacer (jittered for sprite) ───────
351
368
  FULL_SPACER=""
352
- for (( s=0; s<JITTER_PAD; s++ )); do FULL_SPACER+="$B"; done
369
+ for (( s=0; s<SPRITE_PAD; s++ )); do FULL_SPACER+="$B"; done
353
370
 
354
371
  # ── Output name line ABOVE sprite — with speech before name ──
355
372
  SPEECH_TEXT=""
@@ -374,7 +391,7 @@ for (( i=0; i<SPRITE_COUNT; i++ )); do
374
391
  right="${SPRITE_LINES[$i]}${NC}"
375
392
 
376
393
  if [ -n "$left" ]; then
377
- gap=$(( JITTER_PAD - left_w ))
394
+ gap=$(( SPRITE_PAD - left_w ))
378
395
  [ "$gap" -lt 1 ] && gap=1
379
396
  GAP_STR=""
380
397
  for (( g=0; g<gap; g++ )); do GAP_STR+="$B"; done