claude-code-sounds 1.6.0 → 1.7.0
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/README.md +4 -2
- package/bin/cli.js +4 -8
- package/bin/lib.js +49 -14
- package/hooks/play-sound.sh +4 -0
- package/package.json +2 -1
- package/themes/aoe2/sounds/attack-enemy-now.mp3 +0 -0
- package/themes/aoe2/sounds/being-rushed.mp3 +0 -0
- package/themes/aoe2/sounds/confirm.mp3 +0 -0
- package/themes/aoe2/sounds/conversion-warning.mp3 +0 -0
- package/themes/aoe2/sounds/death.mp3 +0 -0
- package/themes/aoe2/sounds/dont-point-that-thing.mp3 +0 -0
- package/themes/aoe2/sounds/drum-roll.mp3 +0 -0
- package/themes/aoe2/sounds/enemy-sighted.mp3 +0 -0
- package/themes/aoe2/sounds/farm-exhausted.mp3 +0 -0
- package/themes/aoe2/sounds/horn.mp3 +0 -0
- package/themes/aoe2/sounds/i-need-a-monk.mp3 +0 -0
- package/themes/aoe2/sounds/it-is-good.mp3 +0 -0
- package/themes/aoe2/sounds/nice-town-ill-take-it.mp3 +0 -0
- package/themes/aoe2/sounds/roggan.mp3 +0 -0
- package/themes/aoe2/sounds/schwarzenegger.mp3 +0 -0
- package/themes/aoe2/sounds/smite-me.mp3 +0 -0
- package/themes/aoe2/sounds/stable.mp3 +0 -0
- package/themes/aoe2/sounds/start-the-game-already.mp3 +0 -0
- package/themes/aoe2/sounds/taunt-ahh.mp3 +0 -0
- package/themes/aoe2/sounds/taunt-all-hail.mp3 +0 -0
- package/themes/aoe2/sounds/taunt-back-to-age-1.mp3 +0 -0
- package/themes/aoe2/sounds/taunt-food-please.mp3 +0 -0
- package/themes/aoe2/sounds/taunt-gold-please.mp3 +0 -0
- package/themes/aoe2/sounds/taunt-herb-laugh.mp3 +0 -0
- package/themes/aoe2/sounds/taunt-no.mp3 +0 -0
- package/themes/aoe2/sounds/taunt-oooh.mp3 +0 -0
- package/themes/aoe2/sounds/taunt-quit-touchin-me.mp3 +0 -0
- package/themes/aoe2/sounds/taunt-stone-please.mp3 +0 -0
- package/themes/aoe2/sounds/taunt-wood-please.mp3 +0 -0
- package/themes/aoe2/sounds/taunt-yes.mp3 +0 -0
- package/themes/aoe2/sounds/unit-created.mp3 +0 -0
- package/themes/aoe2/sounds/viking-horn.mp3 +0 -0
- package/themes/aoe2/sounds/villager-killed.mp3 +0 -0
- package/themes/aoe2/sounds/villager-prrrroh.mp3 +0 -0
- package/themes/aoe2/sounds/villager-spawn.mp3 +0 -0
- package/themes/aoe2/sounds/villager-sssh-ho.mp3 +0 -0
- package/themes/aoe2/sounds/wololo-long.mp3 +0 -0
- package/themes/aoe2/sounds/wololo.mp3 +0 -0
- package/themes/aoe2/theme.json +2 -1
- package/themes/cnc/sounds/alarm.mp3 +0 -0
- package/themes/cnc/sounds/allies-acknowledged.mp3 +0 -0
- package/themes/cnc/sounds/allies-affirmative.mp3 +0 -0
- package/themes/cnc/sounds/allies-agreed.mp3 +0 -0
- package/themes/cnc/sounds/allies-at-once.mp3 +0 -0
- package/themes/cnc/sounds/allies-of-course.mp3 +0 -0
- package/themes/cnc/sounds/allies-ready-and-waiting.mp3 +0 -0
- package/themes/cnc/sounds/allies-reporting.mp3 +0 -0
- package/themes/cnc/sounds/allies-very-well.mp3 +0 -0
- package/themes/cnc/sounds/allies-waiting-orders.mp3 +0 -0
- package/themes/cnc/sounds/allies-yes-sir.mp3 +0 -0
- package/themes/cnc/sounds/base-under-attack.mp3 +0 -0
- package/themes/cnc/sounds/building-destroyed.mp3 +0 -0
- package/themes/cnc/sounds/building-placed.mp3 +0 -0
- package/themes/cnc/sounds/building.mp3 +0 -0
- package/themes/cnc/sounds/cha-ching.mp3 +0 -0
- package/themes/cnc/sounds/construction-complete.mp3 +0 -0
- package/themes/cnc/sounds/credit-in.mp3 +0 -0
- package/themes/cnc/sounds/explosion.mp3 +0 -0
- package/themes/cnc/sounds/gdi-incoming-transmission.mp3 +0 -0
- package/themes/cnc/sounds/gdi-on-hold.mp3 +0 -0
- package/themes/cnc/sounds/gdi-recycle.mp3 +0 -0
- package/themes/cnc/sounds/gdi-success.mp3 +0 -0
- package/themes/cnc/sounds/gdi-unable-to-comply.mp3 +0 -0
- package/themes/cnc/sounds/gdi-warning.mp3 +0 -0
- package/themes/cnc/sounds/got-a-present-for-ya.mp3 +0 -0
- package/themes/cnc/sounds/incoming-transmission.mp3 +0 -0
- package/themes/cnc/sounds/insufficient-funds.mp3 +0 -0
- package/themes/cnc/sounds/man-die.mp3 +0 -0
- package/themes/cnc/sounds/no-money.mp3 +0 -0
- package/themes/cnc/sounds/nod-incoming-transmission.mp3 +0 -0
- package/themes/cnc/sounds/nod-low-power.mp3 +0 -0
- package/themes/cnc/sounds/nod-on-hold.mp3 +0 -0
- package/themes/cnc/sounds/nod-unable-to-comply.mp3 +0 -0
- package/themes/cnc/sounds/nuke-launch.mp3 +0 -0
- package/themes/cnc/sounds/nuke-ready.mp3 +0 -0
- package/themes/cnc/sounds/power-down.mp3 +0 -0
- package/themes/cnc/sounds/power-up.mp3 +0 -0
- package/themes/cnc/sounds/radar-alert.mp3 +0 -0
- package/themes/cnc/sounds/radar-power-on.mp3 +0 -0
- package/themes/cnc/sounds/reinforcements-ready.mp3 +0 -0
- package/themes/cnc/sounds/repairing.mp3 +0 -0
- package/themes/cnc/sounds/selling.mp3 +0 -0
- package/themes/cnc/sounds/soviet-acknowledged.mp3 +0 -0
- package/themes/cnc/sounds/soviet-affirmative.mp3 +0 -0
- package/themes/cnc/sounds/soviet-at-once.mp3 +0 -0
- package/themes/cnc/sounds/soviet-comrade.mp3 +0 -0
- package/themes/cnc/sounds/soviet-reporting.mp3 +0 -0
- package/themes/cnc/sounds/soviet-yes-sir.mp3 +0 -0
- package/themes/cnc/sounds/spy-commander.mp3 +0 -0
- package/themes/cnc/sounds/spy-for-king-and-country.mp3 +0 -0
- package/themes/cnc/sounds/spy-indeed.mp3 +0 -0
- package/themes/cnc/sounds/spy-on-my-way.mp3 +0 -0
- package/themes/cnc/sounds/tanya-chew-on-this.mp3 +0 -0
- package/themes/cnc/sounds/tanya-death.mp3 +0 -0
- package/themes/cnc/sounds/tanya-im-there.mp3 +0 -0
- package/themes/cnc/sounds/tanya-kiss-it-bye-bye.mp3 +0 -0
- package/themes/cnc/sounds/tanya-laugh.mp3 +0 -0
- package/themes/cnc/sounds/tanya-lets-rock.mp3 +0 -0
- package/themes/cnc/sounds/tanya-shake-it-baby.mp3 +0 -0
- package/themes/cnc/sounds/tanya-thats-all-you-got.mp3 +0 -0
- package/themes/cnc/sounds/tanya-yeah.mp3 +0 -0
- package/themes/cnc/sounds/tanya-yes-sir.mp3 +0 -0
- package/themes/cnc/sounds/tesla-shot.mp3 +0 -0
- package/themes/cnc/sounds/ts-auth.mp3 +0 -0
- package/themes/cnc/sounds/ts-notify.mp3 +0 -0
- package/themes/cnc/sounds/ts-reminder.mp3 +0 -0
- package/themes/cnc/sounds/ts-startup.mp3 +0 -0
- package/themes/cnc/sounds/ts-system.mp3 +0 -0
- package/themes/cnc/sounds/unit-lost.mp3 +0 -0
- package/themes/cnc/sounds/unit-promoted.mp3 +0 -0
- package/themes/cnc/sounds/unit-ready.mp3 +0 -0
- package/themes/cnc/theme.json +32 -11
- package/themes/diablo2/sounds/amulet-drop.mp3 +0 -0
- package/themes/diablo2/sounds/andariel.mp3 +0 -0
- package/themes/diablo2/sounds/arrow-block.mp3 +0 -0
- package/themes/diablo2/sounds/barb-gift-for-you.mp3 +0 -0
- package/themes/diablo2/sounds/barb-leap.mp3 +0 -0
- package/themes/diablo2/sounds/barb-select.mp3 +0 -0
- package/themes/diablo2/sounds/barb-shout.mp3 +0 -0
- package/themes/diablo2/sounds/barb-soon-perhaps.mp3 +0 -0
- package/themes/diablo2/sounds/barb-time-to-die.mp3 +0 -0
- package/themes/diablo2/sounds/blade-block.mp3 +0 -0
- package/themes/diablo2/sounds/bloodraven.mp3 +0 -0
- package/themes/diablo2/sounds/bow-shot.mp3 +0 -0
- package/themes/diablo2/sounds/chain-armor.mp3 +0 -0
- package/themes/diablo2/sounds/charm-drop.mp3 +0 -0
- package/themes/diablo2/sounds/countess-bloodbath.mp3 +0 -0
- package/themes/diablo2/sounds/drink-potion.mp3 +0 -0
- package/themes/diablo2/sounds/gem-drop.mp3 +0 -0
- package/themes/diablo2/sounds/gold-drop.mp3 +0 -0
- package/themes/diablo2/sounds/gold-pickup.mp3 +0 -0
- package/themes/diablo2/sounds/helm-drop.mp3 +0 -0
- package/themes/diablo2/sounds/item-drop.mp3 +0 -0
- package/themes/diablo2/sounds/javelin.mp3 +0 -0
- package/themes/diablo2/sounds/key-drop.mp3 +0 -0
- package/themes/diablo2/sounds/level-up.mp3 +0 -0
- package/themes/diablo2/sounds/necro-help-me.mp3 +0 -0
- package/themes/diablo2/sounds/not-enough-mana.mp3 +0 -0
- package/themes/diablo2/sounds/not-even-death.mp3 +0 -0
- package/themes/diablo2/sounds/not-in-town.mp3 +0 -0
- package/themes/diablo2/sounds/poison-trap.mp3 +0 -0
- package/themes/diablo2/sounds/potion.mp3 +0 -0
- package/themes/diablo2/sounds/prime-evils-death.mp3 +0 -0
- package/themes/diablo2/sounds/prime-evils-laugh.mp3 +0 -0
- package/themes/diablo2/sounds/prime-evils-scream.mp3 +0 -0
- package/themes/diablo2/sounds/ring-drop.mp3 +0 -0
- package/themes/diablo2/sounds/scroll.mp3 +0 -0
- package/themes/diablo2/sounds/skull-drop.mp3 +0 -0
- package/themes/diablo2/sounds/sorceress-dead.mp3 +0 -0
- package/themes/diablo2/sounds/sorceress-monster.mp3 +0 -0
- package/themes/diablo2/sounds/sorceress-time-to-die.mp3 +0 -0
- package/themes/diablo2/sounds/stay-awhile-and-listen.mp3 +0 -0
- package/themes/diablo2/sounds/town-portal.mp3 +0 -0
- package/themes/diablo2/theme.json +2 -1
- package/themes/starcraft/sounds/additional-pylons.mp3 +0 -0
- package/themes/starcraft/sounds/arbiter-we-are-vigilant.mp3 +0 -0
- package/themes/starcraft/sounds/archon-obliterate.mp3 +0 -0
- package/themes/starcraft/sounds/archon-power-overwhelming.mp3 +0 -0
- package/themes/starcraft/sounds/archon-the-merging-is-complete.mp3 +0 -0
- package/themes/starcraft/sounds/base-under-attack.mp3 +0 -0
- package/themes/starcraft/sounds/battlecruiser-all-crews-reporting.mp3 +0 -0
- package/themes/starcraft/sounds/battlecruiser-engage.mp3 +0 -0
- package/themes/starcraft/sounds/battlecruiser-good-day-commander.mp3 +0 -0
- package/themes/starcraft/sounds/battlecruiser-make-it-happen.mp3 +0 -0
- package/themes/starcraft/sounds/battlecruiser-operational.mp3 +0 -0
- package/themes/starcraft/sounds/battlecruiser-receiving-transmission.mp3 +0 -0
- package/themes/starcraft/sounds/bug-guy-for-the-overmind.mp3 +0 -0
- package/themes/starcraft/sounds/bug-guy-gladly.mp3 +0 -0
- package/themes/starcraft/sounds/bug-guy-live-for-the-swarm.mp3 +0 -0
- package/themes/starcraft/sounds/bug-guy-prepare-to-die.mp3 +0 -0
- package/themes/starcraft/sounds/bug-guy-sacrifice-me.mp3 +0 -0
- package/themes/starcraft/sounds/carrier-has-arrived.mp3 +0 -0
- package/themes/starcraft/sounds/corsair-excellent.mp3 +0 -0
- package/themes/starcraft/sounds/corsair-it-is-a-good-day-to-die.mp3 +0 -0
- package/themes/starcraft/sounds/dragoon-commencing.mp3 +0 -0
- package/themes/starcraft/sounds/dragoon-i-have-returned.mp3 +0 -0
- package/themes/starcraft/sounds/dropship-can-i-take-your-order.mp3 +0 -0
- package/themes/starcraft/sounds/dropship-in-the-pipe-five-by-five.mp3 +0 -0
- package/themes/starcraft/sounds/duke-alright-then.mp3 +0 -0
- package/themes/starcraft/sounds/duran-how-can-i-be-of-service.mp3 +0 -0
- package/themes/starcraft/sounds/fenix-dragoon-nach-nagalas.mp3 +0 -0
- package/themes/starcraft/sounds/fenix-zealot-for-aiur.mp3 +0 -0
- package/themes/starcraft/sounds/fenix-zealot-i-hunger-for-battle.mp3 +0 -0
- package/themes/starcraft/sounds/firebat-wanna-turn-up-the-heat.mp3 +0 -0
- package/themes/starcraft/sounds/firebat-you-got-my-attention.mp3 +0 -0
- package/themes/starcraft/sounds/ghost-call-for-an-exterminator.mp3 +0 -0
- package/themes/starcraft/sounds/ghost-never-know-what-hit-em.mp3 +0 -0
- package/themes/starcraft/sounds/ghost-reporting.mp3 +0 -0
- package/themes/starcraft/sounds/insufficient-vespene-gas.mp3 +0 -0
- package/themes/starcraft/sounds/kerrigan-a-bold-move.mp3 +0 -0
- package/themes/starcraft/sounds/kerrigan-alright.mp3 +0 -0
- package/themes/starcraft/sounds/kerrigan-im-listening.mp3 +0 -0
- package/themes/starcraft/sounds/kerrigan-on-my-way.mp3 +0 -0
- package/themes/starcraft/sounds/kerrigan-what-now.mp3 +0 -0
- package/themes/starcraft/sounds/marine-ah-thats-the-stuff.mp3 +0 -0
- package/themes/starcraft/sounds/marine-go-go-go.mp3 +0 -0
- package/themes/starcraft/sounds/marine-jacked-up-and-good-to-go.mp3 +0 -0
- package/themes/starcraft/sounds/marine-lets-move.mp3 +0 -0
- package/themes/starcraft/sounds/marine-rock-and-roll.mp3 +0 -0
- package/themes/starcraft/sounds/marine-you-wanna-piece-of-me.mp3 +0 -0
- package/themes/starcraft/sounds/mutalisk.mp3 +0 -0
- package/themes/starcraft/sounds/not-enough-minerals.mp3 +0 -0
- package/themes/starcraft/sounds/nuclear-launch-detected.mp3 +0 -0
- package/themes/starcraft/sounds/protoss-electric.mp3 +0 -0
- package/themes/starcraft/sounds/protoss-fighting.mp3 +0 -0
- package/themes/starcraft/sounds/protoss-upgrade.mp3 +0 -0
- package/themes/starcraft/sounds/protoss-waiting.mp3 +0 -0
- package/themes/starcraft/sounds/ready-to-roll-out.mp3 +0 -0
- package/themes/starcraft/sounds/scv-affirmative.mp3 +0 -0
- package/themes/starcraft/sounds/scv-good-to-go-sir.mp3 +0 -0
- package/themes/starcraft/sounds/scv-i-read-you.mp3 +0 -0
- package/themes/starcraft/sounds/scv-orders-received.mp3 +0 -0
- package/themes/starcraft/sounds/scv-reportin-for-duty.mp3 +0 -0
- package/themes/starcraft/sounds/scv-roger-that.mp3 +0 -0
- package/themes/starcraft/sounds/starcraft-confirm.mp3 +0 -0
- package/themes/starcraft/sounds/templar-i-heed-thy-call.mp3 +0 -0
- package/themes/starcraft/sounds/templar-it-shall-be-done.mp3 +0 -0
- package/themes/starcraft/sounds/wraith-reporting-in.mp3 +0 -0
- package/themes/starcraft/sounds/wraith-standing-by.mp3 +0 -0
- package/themes/starcraft/sounds/zealot-i-long-for-combat.mp3 +0 -0
- package/themes/starcraft/sounds/zealot-my-life-for-aiur.mp3 +0 -0
- package/themes/starcraft/theme.json +26 -9
- package/themes/wh40k/sounds/abhor-the-daemon.mp3 +0 -0
- package/themes/wh40k/sounds/area-secured.mp3 +0 -0
- package/themes/wh40k/sounds/as-ordered.mp3 +0 -0
- package/themes/wh40k/sounds/as-you-command.mp3 +0 -0
- package/themes/wh40k/sounds/as-you-wish.mp3 +0 -0
- package/themes/wh40k/sounds/at-your-command.mp3 +0 -0
- package/themes/wh40k/sounds/awaiting-orders.mp3 +0 -0
- package/themes/wh40k/sounds/by-the-emperor-a-daemon.mp3 +0 -0
- package/themes/wh40k/sounds/chaos-death-1.mp3 +0 -0
- package/themes/wh40k/sounds/chaos-death-2.mp3 +0 -0
- package/themes/wh40k/sounds/chaos-sighted.mp3 +0 -0
- package/themes/wh40k/sounds/claim-it-in-the-name-of-the-emperor.mp3 +0 -0
- package/themes/wh40k/sounds/cleanse-purge-kill.mp3 +0 -0
- package/themes/wh40k/sounds/commencing-attack.mp3 +0 -0
- package/themes/wh40k/sounds/crush-them.mp3 +0 -0
- package/themes/wh40k/sounds/curse-the-monster.mp3 +0 -0
- package/themes/wh40k/sounds/damnation.mp3 +0 -0
- package/themes/wh40k/sounds/death-to-the-alien.mp3 +0 -0
- package/themes/wh40k/sounds/death-to-the-false-emperor.mp3 +0 -0
- package/themes/wh40k/sounds/defending-objective.mp3 +0 -0
- package/themes/wh40k/sounds/despair-for-your-end-is-near.mp3 +0 -0
- package/themes/wh40k/sounds/direct-us-to-the-enemy.mp3 +0 -0
- package/themes/wh40k/sounds/engaging-the-enemy.mp3 +0 -0
- package/themes/wh40k/sounds/ever-vigilant.mp3 +0 -0
- package/themes/wh40k/sounds/faith-holds-us.mp3 +0 -0
- package/themes/wh40k/sounds/faith-is-our-shield.mp3 +0 -0
- package/themes/wh40k/sounds/fall-back-and-regroup.mp3 +0 -0
- package/themes/wh40k/sounds/fall-back.mp3 +0 -0
- package/themes/wh40k/sounds/fear-denies-faith.mp3 +0 -0
- package/themes/wh40k/sounds/fear-not-brothers.mp3 +0 -0
- package/themes/wh40k/sounds/fear-our-wrath.mp3 +0 -0
- package/themes/wh40k/sounds/for-the-dark-gods.mp3 +0 -0
- package/themes/wh40k/sounds/for-the-emperor-2.mp3 +0 -0
- package/themes/wh40k/sounds/for-the-emperor.mp3 +0 -0
- package/themes/wh40k/sounds/heresy-grows-from-idleness.mp3 +0 -0
- package/themes/wh40k/sounds/it-is-done.mp3 +0 -0
- package/themes/wh40k/sounds/maim-kill-burn.mp3 +0 -0
- package/themes/wh40k/sounds/marine-death.mp3 +0 -0
- package/themes/wh40k/sounds/marine-squad-deployed.mp3 +0 -0
- package/themes/wh40k/sounds/mission-accomplished.mp3 +0 -0
- package/themes/wh40k/sounds/nuffink-can-stand-in-my-way.mp3 +0 -0
- package/themes/wh40k/sounds/orks-iz-da-biggest.mp3 +0 -0
- package/themes/wh40k/sounds/orks-meant-fa-fightin.mp3 +0 -0
- package/themes/wh40k/sounds/purge-the-witches.mp3 +0 -0
- package/themes/wh40k/sounds/quit-hidin-like-a-grot.mp3 +0 -0
- package/themes/wh40k/sounds/ready-fa-stompin.mp3 +0 -0
- package/themes/wh40k/sounds/send-me-to-da-fight.mp3 +0 -0
- package/themes/wh40k/sounds/waaagh-boyz.mp3 +0 -0
- package/themes/wh40k/sounds/waaagh-warboss.mp3 +0 -0
- package/themes/wh40k/sounds/we-is-da-orks.mp3 +0 -0
- package/themes/wh40k/sounds/you-boyz-is-no-good.mp3 +0 -0
- package/themes/wh40k/theme.json +2 -1
- package/themes/zelda-botw/sounds/big-item-get.mp3 +0 -0
- package/themes/zelda-botw/sounds/blood-moon-omen.mp3 +0 -0
- package/themes/zelda-botw/sounds/botw-bird-chirping.mp3 +0 -0
- package/themes/zelda-botw/sounds/botw-construction.mp3 +0 -0
- package/themes/zelda-botw/sounds/botw-game-over.mp3 +0 -0
- package/themes/zelda-botw/sounds/botw-interact.mp3 +0 -0
- package/themes/zelda-botw/sounds/botw-opening.mp3 +0 -0
- package/themes/zelda-botw/sounds/botw-owl-hoot.mp3 +0 -0
- package/themes/zelda-botw/sounds/botw-raven-call.mp3 +0 -0
- package/themes/zelda-botw/sounds/chest-item-get.mp3 +0 -0
- package/themes/zelda-botw/sounds/chest-opening.mp3 +0 -0
- package/themes/zelda-botw/sounds/cooking-fail.mp3 +0 -0
- package/themes/zelda-botw/sounds/cooking-great-success.mp3 +0 -0
- package/themes/zelda-botw/sounds/cooking-normal.mp3 +0 -0
- package/themes/zelda-botw/sounds/dubious-food.mp3 +0 -0
- package/themes/zelda-botw/sounds/fairy-fountain.mp3 +0 -0
- package/themes/zelda-botw/sounds/finding-korok.mp3 +0 -0
- package/themes/zelda-botw/sounds/food-item-get.mp3 +0 -0
- package/themes/zelda-botw/sounds/guardian-alert.mp3 +0 -0
- package/themes/zelda-botw/sounds/heart-container-fanfare.mp3 +0 -0
- package/themes/zelda-botw/sounds/item-get-extended.mp3 +0 -0
- package/themes/zelda-botw/sounds/korok-appears.mp3 +0 -0
- package/themes/zelda-botw/sounds/korok-found.mp3 +0 -0
- package/themes/zelda-botw/sounds/korok-question.mp3 +0 -0
- package/themes/zelda-botw/sounds/korok-riddle-solved.mp3 +0 -0
- package/themes/zelda-botw/sounds/korok-yahaha.mp3 +0 -0
- package/themes/zelda-botw/sounds/legendary-item-get.mp3 +0 -0
- package/themes/zelda-botw/sounds/puzzle-solved.mp3 +0 -0
- package/themes/zelda-botw/sounds/sheikah-module-extreme.mp3 +0 -0
- package/themes/zelda-botw/sounds/sheikah-slate.mp3 +0 -0
- package/themes/zelda-botw/sounds/shrine-spirit-orb.mp3 +0 -0
- package/themes/zelda-botw/sounds/spirit-orb-fanfare.mp3 +0 -0
- package/themes/zelda-botw/sounds/zelda-blood-moon-rises.mp3 +0 -0
- package/themes/zelda-botw/sounds/zelda-do-it-link.mp3 +0 -0
- package/themes/zelda-botw/sounds/zelda-finish-him-link.mp3 +0 -0
- package/themes/zelda-botw/sounds/zelda-hurry-link.mp3 +0 -0
- package/themes/zelda-botw/sounds/zelda-item-catch.mp3 +0 -0
- package/themes/zelda-botw/sounds/zelda-its-working.mp3 +0 -0
- package/themes/zelda-botw/sounds/zelda-link-now.mp3 +0 -0
- package/themes/zelda-botw/sounds/zelda-may-you-be-victorious.mp3 +0 -0
- package/themes/zelda-botw/sounds/zelda-prepare-yourself-link.mp3 +0 -0
- package/themes/zelda-botw/theme.json +110 -0
package/README.md
CHANGED
|
@@ -10,7 +10,7 @@
|
|
|
10
10
|
|
|
11
11
|
Plays sound effects when sessions start, prompts are submitted, responses finish, errors occur, and more.
|
|
12
12
|
|
|
13
|
-
Ships with
|
|
13
|
+
Ships with 17 themes. Bring your own sounds or create new ones.
|
|
14
14
|
|
|
15
15
|
*"Something need doing?"*
|
|
16
16
|
|
|
@@ -48,6 +48,7 @@ The bash installer requires `jq` (`brew install jq`).
|
|
|
48
48
|
| **Command & Conquer** (`cnc`) | 52 | *"Construction complete"* — EVA announcements, unit voices, and Red Alert |
|
|
49
49
|
| **Diablo 2** (`diablo2`) | 46 | *"Stay awhile and listen"* — Deckard Cain, item drops, and the Prime Evils |
|
|
50
50
|
| **Halo** (`halo`) | 52 | *"Wake me when you need me"* — Master Chief, Cortana, and the multiplayer announcer |
|
|
51
|
+
| **League of Legends** (`league-of-legends`) | 43 | *"Welcome to Summoner's Rift"* — Champion voice lines, announcer calls, and ping sounds |
|
|
51
52
|
| **Metal Gear Solid** (`mgs`) | 40 | *"Kept you waiting, huh?"* — Codec calls, alert sounds, and Snake |
|
|
52
53
|
| **Pokemon Gen 3** (`pokemon-gen3`) | 51 | *"A wild TREECKO appeared!"* — GBA battle cries, Hoenn fanfares, and RSE bleeps |
|
|
53
54
|
| **Portal** (`portal`) | 42 | *"Are you still there?"* — Turrets, portal guns, and Aperture Science |
|
|
@@ -57,6 +58,7 @@ The bash installer requires `jq` (`brew install jq`).
|
|
|
57
58
|
| **Super Mario Bros** (`mario`) | 47 | *"Let's-a go!"* — Coins, power-ups, and Mario's voice from NES to N64 |
|
|
58
59
|
| **Warhammer 40k** (`wh40k`) | 50 | *"For the Emperor!"* — Space Marines, Chaos war cries, and Ork shouts |
|
|
59
60
|
| **WC3 Orc Peon** (`wc3-peon`) | 57 | *"Something need doing?"* — Peons, Grunts, Shamans, and Grom Hellscream |
|
|
61
|
+
| **Zelda: Breath of the Wild** (`zelda-botw`) | 42 | *"It's dangerous to go alone"* — Sheikah Slate sounds, Korok discoveries, and Guardian alerts |
|
|
60
62
|
| **Zelda: Ocarina of Time** (`zelda-oot`) | 47 | *"Hey! Listen!"* — Navi, Link, and iconic OOT jingles |
|
|
61
63
|
|
|
62
64
|
Each theme maps sounds across all 11 Claude Code lifecycle events.
|
|
@@ -184,6 +186,6 @@ Place audio files (`.wav` or `.mp3`) in `themes/<name>/sounds/` with filenames m
|
|
|
184
186
|
|
|
185
187
|
This project is an unofficial fan project provided free of charge for personal, non-commercial use. It is not affiliated with, endorsed by, or sponsored by any game publisher or rights holder.
|
|
186
188
|
|
|
187
|
-
All game audio is the property of its respective owners: Blizzard Entertainment (Warcraft, StarCraft, Diablo), Nintendo/Game Freak (Zelda, Mario, Pokemon), Lucasfilm/Disney (Star Wars), Konami (Metal Gear Solid), Valve (Portal), Electronic Arts/Westwood Studios (Command & Conquer), Xbox Game Studios/Ensemble Studios (Age of Empires), Games Workshop/Relic Entertainment (Warhammer 40,000), Xbox Game Studios/Bungie/343 Industries (Halo), Activision/Infinity Ward (Call of Duty), TriStar Pictures (Short Circuit). All trademarks and registered trademarks are the property of their respective owners.
|
|
189
|
+
All game audio is the property of its respective owners: Blizzard Entertainment (Warcraft, StarCraft, Diablo), Nintendo/Game Freak (Zelda, Mario, Pokemon), Lucasfilm/Disney (Star Wars), Konami (Metal Gear Solid), Valve (Portal), Electronic Arts/Westwood Studios (Command & Conquer), Xbox Game Studios/Ensemble Studios (Age of Empires), Games Workshop/Relic Entertainment (Warhammer 40,000), Xbox Game Studios/Bungie/343 Industries (Halo), Activision/Infinity Ward (Call of Duty), Riot Games (League of Legends), TriStar Pictures (Short Circuit). All trademarks and registered trademarks are the property of their respective owners.
|
|
188
190
|
|
|
189
191
|
If you are a rights holder and would like content removed, please [open an issue](https://github.com/ryparker/claude-code-sounds/issues) and it will be taken down promptly.
|
package/bin/cli.js
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
const fs = require("fs");
|
|
4
4
|
const path = require("path");
|
|
5
|
-
const {
|
|
5
|
+
const { execFileSync, spawn } = require("child_process");
|
|
6
6
|
const p = require("@clack/prompts");
|
|
7
7
|
const { Prompt } = require("@clack/core");
|
|
8
8
|
const color = require("picocolors");
|
|
@@ -25,13 +25,9 @@ const installHooksConfig = () => lib.installHooksConfig(paths);
|
|
|
25
25
|
|
|
26
26
|
// ─── Helpers ─────────────────────────────────────────────────────────────────
|
|
27
27
|
|
|
28
|
-
function exec(cmd, opts = {}) {
|
|
29
|
-
return execSync(cmd, { encoding: "utf-8", stdio: "pipe", ...opts });
|
|
30
|
-
}
|
|
31
|
-
|
|
32
28
|
function hasCommand(name) {
|
|
33
29
|
try {
|
|
34
|
-
|
|
30
|
+
execFileSync("which", [name], { stdio: "pipe" });
|
|
35
31
|
return true;
|
|
36
32
|
} catch {
|
|
37
33
|
return false;
|
|
@@ -179,8 +175,8 @@ class SoundGrid extends Prompt {
|
|
|
179
175
|
|
|
180
176
|
if (currentRowIdx < scrollTop) {
|
|
181
177
|
scrollTop = Math.max(0, currentRowIdx - 1);
|
|
182
|
-
} else if (currentRowIdx >= scrollTop + maxVisible) {
|
|
183
|
-
scrollTop = currentRowIdx - maxVisible +
|
|
178
|
+
} else if (currentRowIdx >= scrollTop + maxVisible - 2) {
|
|
179
|
+
scrollTop = currentRowIdx - maxVisible + 3;
|
|
184
180
|
}
|
|
185
181
|
if (scrollTop > 0 && myRows[scrollTop]?.type === 'sound') {
|
|
186
182
|
for (let i = scrollTop - 1; i >= Math.max(0, scrollTop - 2); i--) {
|
package/bin/lib.js
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
const fs = require("fs");
|
|
2
2
|
const path = require("path");
|
|
3
3
|
const os = require("os");
|
|
4
|
+
const { execFileSync } = require("child_process");
|
|
4
5
|
|
|
5
6
|
// ─── Path Factory ────────────────────────────────────────────────────────────
|
|
6
7
|
|
|
@@ -67,7 +68,12 @@ function listThemes(paths) {
|
|
|
67
68
|
for (const name of fs.readdirSync(paths.THEMES_DIR)) {
|
|
68
69
|
const themeJson = path.join(paths.THEMES_DIR, name, "theme.json");
|
|
69
70
|
if (!fs.existsSync(themeJson)) continue;
|
|
70
|
-
|
|
71
|
+
let meta;
|
|
72
|
+
try {
|
|
73
|
+
meta = JSON.parse(fs.readFileSync(themeJson, "utf-8"));
|
|
74
|
+
} catch {
|
|
75
|
+
continue;
|
|
76
|
+
}
|
|
71
77
|
let soundCount = 0;
|
|
72
78
|
if (meta.sounds) {
|
|
73
79
|
for (const cat of Object.values(meta.sounds)) {
|
|
@@ -97,26 +103,34 @@ function resolveThemeSoundPath(themeName, fileName, paths) {
|
|
|
97
103
|
|
|
98
104
|
function readSettings(paths) {
|
|
99
105
|
if (fs.existsSync(paths.SETTINGS_PATH)) {
|
|
100
|
-
|
|
106
|
+
try {
|
|
107
|
+
return JSON.parse(fs.readFileSync(paths.SETTINGS_PATH, "utf-8"));
|
|
108
|
+
} catch {}
|
|
101
109
|
}
|
|
102
110
|
return {};
|
|
103
111
|
}
|
|
104
112
|
|
|
105
113
|
function writeSettings(settings, paths) {
|
|
106
114
|
mkdirp(paths.CLAUDE_DIR);
|
|
107
|
-
|
|
115
|
+
const tmp = paths.SETTINGS_PATH + ".tmp";
|
|
116
|
+
fs.writeFileSync(tmp, JSON.stringify(settings, null, 2) + "\n");
|
|
117
|
+
fs.renameSync(tmp, paths.SETTINGS_PATH);
|
|
108
118
|
}
|
|
109
119
|
|
|
110
120
|
function readInstalled(paths) {
|
|
111
121
|
if (fs.existsSync(paths.INSTALLED_PATH)) {
|
|
112
|
-
|
|
122
|
+
try {
|
|
123
|
+
return JSON.parse(fs.readFileSync(paths.INSTALLED_PATH, "utf-8"));
|
|
124
|
+
} catch {}
|
|
113
125
|
}
|
|
114
126
|
return null;
|
|
115
127
|
}
|
|
116
128
|
|
|
117
129
|
function writeInstalled(data, paths) {
|
|
118
130
|
mkdirp(paths.SOUNDS_DIR);
|
|
119
|
-
|
|
131
|
+
const tmp = paths.INSTALLED_PATH + ".tmp";
|
|
132
|
+
fs.writeFileSync(tmp, JSON.stringify(data, null, 2) + "\n");
|
|
133
|
+
fs.renameSync(tmp, paths.INSTALLED_PATH);
|
|
120
134
|
}
|
|
121
135
|
|
|
122
136
|
function isMuted(paths) {
|
|
@@ -168,6 +182,20 @@ function _updateHookScript(paths) {
|
|
|
168
182
|
}
|
|
169
183
|
}
|
|
170
184
|
|
|
185
|
+
function compileMicHelper(paths) {
|
|
186
|
+
const src = path.join(paths.PKG_DIR, "helpers", "mic-active.swift");
|
|
187
|
+
const dest = path.join(paths.SOUNDS_DIR, ".mic-active");
|
|
188
|
+
if (!fs.existsSync(src)) return false;
|
|
189
|
+
try {
|
|
190
|
+
mkdirp(paths.SOUNDS_DIR);
|
|
191
|
+
execFileSync("swiftc", ["-O", src, "-o", dest], { stdio: "pipe" });
|
|
192
|
+
fs.chmodSync(dest, 0o755);
|
|
193
|
+
return true;
|
|
194
|
+
} catch {
|
|
195
|
+
return false;
|
|
196
|
+
}
|
|
197
|
+
}
|
|
198
|
+
|
|
171
199
|
// ─── Detect Existing Install ─────────────────────────────────────────────────
|
|
172
200
|
|
|
173
201
|
function detectExistingInstall(paths) {
|
|
@@ -221,23 +249,26 @@ function installSounds(selections, paths) {
|
|
|
221
249
|
const catDir = path.join(paths.SOUNDS_DIR, cat);
|
|
222
250
|
mkdirp(catDir);
|
|
223
251
|
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
if (f.endsWith(".wav") || f.endsWith(".mp3")) {
|
|
227
|
-
fs.unlinkSync(path.join(catDir, f));
|
|
228
|
-
}
|
|
229
|
-
}
|
|
230
|
-
} catch {}
|
|
231
|
-
|
|
252
|
+
// Copy new files first
|
|
253
|
+
const newFiles = new Set();
|
|
232
254
|
for (const item of items) {
|
|
233
255
|
const srcPath = resolveThemeSoundPath(item.themeName, item.fileName, paths);
|
|
234
256
|
const destPath = path.join(catDir, item.fileName);
|
|
235
|
-
|
|
236
257
|
if (fs.existsSync(srcPath)) {
|
|
237
258
|
fs.copyFileSync(srcPath, destPath);
|
|
238
259
|
total++;
|
|
239
260
|
}
|
|
261
|
+
newFiles.add(item.fileName);
|
|
240
262
|
}
|
|
263
|
+
|
|
264
|
+
// Then remove old files not in the new set
|
|
265
|
+
try {
|
|
266
|
+
for (const f of fs.readdirSync(catDir)) {
|
|
267
|
+
if ((f.endsWith(".wav") || f.endsWith(".mp3")) && !newFiles.has(f)) {
|
|
268
|
+
fs.unlinkSync(path.join(catDir, f));
|
|
269
|
+
}
|
|
270
|
+
}
|
|
271
|
+
} catch {}
|
|
241
272
|
}
|
|
242
273
|
|
|
243
274
|
return total;
|
|
@@ -270,6 +301,9 @@ function installHooksConfig(paths) {
|
|
|
270
301
|
if (!isDnd(paths)) {
|
|
271
302
|
setDnd(true, paths);
|
|
272
303
|
}
|
|
304
|
+
|
|
305
|
+
// Compile mic-active helper (auto-mute when microphone is in use)
|
|
306
|
+
compileMicHelper(paths);
|
|
273
307
|
}
|
|
274
308
|
|
|
275
309
|
function uninstallAll(paths) {
|
|
@@ -346,6 +380,7 @@ module.exports = {
|
|
|
346
380
|
detectExistingInstall,
|
|
347
381
|
installSounds,
|
|
348
382
|
installHooksConfig,
|
|
383
|
+
compileMicHelper,
|
|
349
384
|
uninstallAll,
|
|
350
385
|
quickInstall,
|
|
351
386
|
};
|
package/hooks/play-sound.sh
CHANGED
|
@@ -15,6 +15,10 @@ if [[ -f "$SOUNDS_DIR/.dnd" ]]; then
|
|
|
15
15
|
done < "$SOUNDS_DIR/.dnd"
|
|
16
16
|
fi
|
|
17
17
|
|
|
18
|
+
# Auto-mute: skip when microphone is in use (e.g. Superwhisper, dictation)
|
|
19
|
+
MIC_CHECK="$SOUNDS_DIR/.mic-active"
|
|
20
|
+
[[ -x "$MIC_CHECK" ]] && "$MIC_CHECK" > /dev/null 2>&1 && exit 0
|
|
21
|
+
|
|
18
22
|
[[ -z "$CATEGORY" ]] && exit 0
|
|
19
23
|
DIR="$SOUNDS_DIR/$CATEGORY"
|
|
20
24
|
[[ ! -d "$DIR" ]] && exit 0
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "claude-code-sounds",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.7.0",
|
|
4
4
|
"description": "Sound themes for Claude Code lifecycle hooks",
|
|
5
5
|
"bin": {
|
|
6
6
|
"claude-code-sounds": "bin/cli.js"
|
|
@@ -23,6 +23,7 @@
|
|
|
23
23
|
"files": [
|
|
24
24
|
"bin/",
|
|
25
25
|
"commands/",
|
|
26
|
+
"helpers/",
|
|
26
27
|
"hooks/",
|
|
27
28
|
"themes/",
|
|
28
29
|
"images/"
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
package/themes/aoe2/theme.json
CHANGED
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|