slab: 'i'm tired' TTS stinger with cosine fade-out before sleep
When Claude finishes the last stop-event with the lid closed and no
other active subagents, play a short "i'm tired" TTS phrase with a
smooth cosine fade-out tail before calling pmset sleepnow. Previously
the lid-closed path just played the all-done chime and cut straight
to sleep — the abrupt transition felt jarring.
New helper: slab/bin/claude-tired.py
- Synthesizes "i'm tired" via macOS `say`, captures to a wav
- Applies a cosine-windowed amplitude fade over the final ~1.2 s
- Plays through sounddevice, holds a short silence pad at the end
- Exits cleanly so the calling shell can fire pmset sleepnow next
slab/bin/claude-stop.sh:
- lid=closed + others=0 branch now calls the helper instead of
afplay'ing the all-done.wav directly
- Falls back to all-done.wav if the venv or helper is missing (so
a broken install doesn't leave the machine silent on sleep)
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>