pingthings 0.9.0 → 1.1.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/LICENSE +39 -1
- package/README.md +40 -1
- package/package.json +1 -1
- package/packs/nature-animals/manifest.json +52 -0
- package/packs/nature-animals/sounds/bark-1.ogg +0 -0
- package/packs/nature-animals/sounds/bark-2.ogg +0 -0
- package/packs/nature-animals/sounds/chirp-1.ogg +0 -0
- package/packs/nature-animals/sounds/chirp-2.ogg +0 -0
- package/packs/nature-animals/sounds/chirp-3.ogg +0 -0
- package/packs/nature-animals/sounds/coo.ogg +0 -0
- package/packs/nature-animals/sounds/cricket-1.ogg +0 -0
- package/packs/nature-animals/sounds/cricket-2.ogg +0 -0
- package/packs/nature-animals/sounds/howl.ogg +0 -0
- package/packs/nature-animals/sounds/insect-1.ogg +0 -0
- package/packs/nature-animals/sounds/insect-2.ogg +0 -0
- package/packs/nature-animals/sounds/owl-hoot.ogg +0 -0
- package/packs/nature-animals/sounds/peep-1.ogg +0 -0
- package/packs/nature-animals/sounds/peep-2.ogg +0 -0
- package/packs/nature-animals/sounds/snort.ogg +0 -0
- package/packs/nature-forest/manifest.json +50 -0
- package/packs/nature-forest/sounds/bird-1.ogg +0 -0
- package/packs/nature-forest/sounds/bird-2.ogg +0 -0
- package/packs/nature-forest/sounds/bird-3.ogg +0 -0
- package/packs/nature-forest/sounds/branch-crack.ogg +0 -0
- package/packs/nature-forest/sounds/critter-1.ogg +0 -0
- package/packs/nature-forest/sounds/critter-2.ogg +0 -0
- package/packs/nature-forest/sounds/leaf-rustle-1.ogg +0 -0
- package/packs/nature-forest/sounds/leaf-rustle-2.ogg +0 -0
- package/packs/nature-forest/sounds/leaf-rustle-3.ogg +0 -0
- package/packs/nature-forest/sounds/songbird.ogg +0 -0
- package/packs/nature-forest/sounds/stream-splash-1.ogg +0 -0
- package/packs/nature-forest/sounds/stream-splash-2.ogg +0 -0
- package/packs/nature-forest/sounds/twig-snap-1.ogg +0 -0
- package/packs/nature-forest/sounds/twig-snap-2.ogg +0 -0
- package/packs/nature-night/manifest.json +50 -0
- package/packs/nature-night/sounds/distant-animal-1.ogg +0 -0
- package/packs/nature-night/sounds/distant-animal-2.ogg +0 -0
- package/packs/nature-night/sounds/eerie-1.ogg +0 -0
- package/packs/nature-night/sounds/eerie-2.ogg +0 -0
- package/packs/nature-night/sounds/night-call-1.ogg +0 -0
- package/packs/nature-night/sounds/night-call-2.ogg +0 -0
- package/packs/nature-night/sounds/night-cricket-1.ogg +0 -0
- package/packs/nature-night/sounds/night-cricket-2.ogg +0 -0
- package/packs/nature-night/sounds/night-owl.ogg +0 -0
- package/packs/nature-night/sounds/rustle-1.ogg +0 -0
- package/packs/nature-night/sounds/rustle-2.ogg +0 -0
- package/packs/nature-night/sounds/rustle-3.ogg +0 -0
- package/packs/nature-night/sounds/sleeping-creature.ogg +0 -0
- package/packs/nature-night/sounds/wolf-howl.ogg +0 -0
- package/packs/nature-ocean/manifest.json +45 -0
- package/packs/nature-ocean/sounds/bubble-1.ogg +0 -0
- package/packs/nature-ocean/sounds/bubble-2.ogg +0 -0
- package/packs/nature-ocean/sounds/current.ogg +0 -0
- package/packs/nature-ocean/sounds/deep-1.ogg +0 -0
- package/packs/nature-ocean/sounds/deep-2.ogg +0 -0
- package/packs/nature-ocean/sounds/shore-1.ogg +0 -0
- package/packs/nature-ocean/sounds/shore-2.ogg +0 -0
- package/packs/nature-ocean/sounds/wave-1.ogg +0 -0
- package/packs/nature-ocean/sounds/wave-2.ogg +0 -0
- package/packs/nature-ocean/sounds/wind-1.ogg +0 -0
- package/packs/nature-ocean/sounds/wind-2.ogg +0 -0
- package/packs/nature-weather/manifest.json +47 -0
- package/packs/nature-weather/sounds/distant-thunder.ogg +0 -0
- package/packs/nature-weather/sounds/lightning-crack.ogg +0 -0
- package/packs/nature-weather/sounds/rain-drop-1.ogg +0 -0
- package/packs/nature-weather/sounds/rain-drop-2.ogg +0 -0
- package/packs/nature-weather/sounds/storm-1.ogg +0 -0
- package/packs/nature-weather/sounds/storm-2.ogg +0 -0
- package/packs/nature-weather/sounds/thunder-1.ogg +0 -0
- package/packs/nature-weather/sounds/thunder-2.ogg +0 -0
- package/packs/nature-weather/sounds/thunder-3.ogg +0 -0
- package/packs/nature-weather/sounds/thunder-rumble.ogg +0 -0
- package/packs/nature-weather/sounds/wind-gust-1.ogg +0 -0
- package/packs/nature-weather/sounds/wind-gust-2.ogg +0 -0
- package/packs/office-classic/manifest.json +52 -0
- package/packs/office-classic/sounds/desk-knock.ogg +0 -0
- package/packs/office-classic/sounds/door-close-1.ogg +0 -0
- package/packs/office-classic/sounds/door-close-2.ogg +0 -0
- package/packs/office-classic/sounds/door-open.ogg +0 -0
- package/packs/office-classic/sounds/drawer-open.ogg +0 -0
- package/packs/office-classic/sounds/key-turn-1.ogg +0 -0
- package/packs/office-classic/sounds/key-turn-2.ogg +0 -0
- package/packs/office-classic/sounds/paper-1.ogg +0 -0
- package/packs/office-classic/sounds/paper-2.ogg +0 -0
- package/packs/office-classic/sounds/paper-3.ogg +0 -0
- package/packs/office-classic/sounds/paper-4.ogg +0 -0
- package/packs/office-classic/sounds/pen-click.ogg +0 -0
- package/packs/office-classic/sounds/stapler.ogg +0 -0
- package/packs/office-classic/sounds/switch-1.ogg +0 -0
- package/packs/office-classic/sounds/switch-2.ogg +0 -0
- package/packs/office-digital/manifest.json +52 -0
- package/packs/office-digital/sounds/alert-1.ogg +0 -0
- package/packs/office-digital/sounds/alert-2.ogg +0 -0
- package/packs/office-digital/sounds/ascend-1.ogg +0 -0
- package/packs/office-digital/sounds/ascend-2.ogg +0 -0
- package/packs/office-digital/sounds/ascend-3.ogg +0 -0
- package/packs/office-digital/sounds/chime.ogg +0 -0
- package/packs/office-digital/sounds/descend.ogg +0 -0
- package/packs/office-digital/sounds/down-tone.ogg +0 -0
- package/packs/office-digital/sounds/low-alert.ogg +0 -0
- package/packs/office-digital/sounds/ping-1.ogg +0 -0
- package/packs/office-digital/sounds/ping-2.ogg +0 -0
- package/packs/office-digital/sounds/ping-3.ogg +0 -0
- package/packs/office-digital/sounds/random-tone.ogg +0 -0
- package/packs/office-digital/sounds/up-tone.ogg +0 -0
- package/packs/office-digital/sounds/zap-tone.ogg +0 -0
- package/packs/office-mechanical/manifest.json +52 -0
- package/packs/office-mechanical/sounds/clamp.ogg +0 -0
- package/packs/office-mechanical/sounds/hum-1.ogg +0 -0
- package/packs/office-mechanical/sounds/hum-2.ogg +0 -0
- package/packs/office-mechanical/sounds/machine-1.ogg +0 -0
- package/packs/office-mechanical/sounds/machine-2.ogg +0 -0
- package/packs/office-mechanical/sounds/machine-3.ogg +0 -0
- package/packs/office-mechanical/sounds/ratchet.ogg +0 -0
- package/packs/office-mechanical/sounds/stamp-1.ogg +0 -0
- package/packs/office-mechanical/sounds/stamp-2.ogg +0 -0
- package/packs/office-mechanical/sounds/stamp-3.ogg +0 -0
- package/packs/office-mechanical/sounds/tap-1.ogg +0 -0
- package/packs/office-mechanical/sounds/tap-2.ogg +0 -0
- package/packs/office-mechanical/sounds/tap-3.ogg +0 -0
- package/packs/office-mechanical/sounds/tap-4.ogg +0 -0
- package/packs/office-mechanical/sounds/wrench.ogg +0 -0
- package/packs/office-minimal/manifest.json +52 -0
- package/packs/office-minimal/sounds/drop-1.ogg +0 -0
- package/packs/office-minimal/sounds/drop-2.ogg +0 -0
- package/packs/office-minimal/sounds/scroll-1.ogg +0 -0
- package/packs/office-minimal/sounds/scroll-2.ogg +0 -0
- package/packs/office-minimal/sounds/select-1.ogg +0 -0
- package/packs/office-minimal/sounds/select-2.ogg +0 -0
- package/packs/office-minimal/sounds/select-3.ogg +0 -0
- package/packs/office-minimal/sounds/switch-1.ogg +0 -0
- package/packs/office-minimal/sounds/switch-2.ogg +0 -0
- package/packs/office-minimal/sounds/tick-1.ogg +0 -0
- package/packs/office-minimal/sounds/tick-2.ogg +0 -0
- package/packs/office-minimal/sounds/tick-3.ogg +0 -0
- package/packs/office-minimal/sounds/toggle-1.ogg +0 -0
- package/packs/office-minimal/sounds/toggle-2.ogg +0 -0
- package/packs/office-minimal/sounds/toggle-3.ogg +0 -0
- package/packs/serene-bells/manifest.json +49 -0
- package/packs/serene-bells/sounds/crystal-1.ogg +0 -0
- package/packs/serene-bells/sounds/crystal-2.ogg +0 -0
- package/packs/serene-bells/sounds/crystal-3.ogg +0 -0
- package/packs/serene-bells/sounds/crystal-4.ogg +0 -0
- package/packs/serene-bells/sounds/crystal-5.ogg +0 -0
- package/packs/serene-bells/sounds/gong-1.ogg +0 -0
- package/packs/serene-bells/sounds/gong-2.ogg +0 -0
- package/packs/serene-bells/sounds/temple-bell-1.ogg +0 -0
- package/packs/serene-bells/sounds/temple-bell-2.ogg +0 -0
- package/packs/serene-bells/sounds/temple-bell-3.ogg +0 -0
- package/packs/serene-bells/sounds/wind-chime-1.ogg +0 -0
- package/packs/serene-bells/sounds/wind-chime-2.ogg +0 -0
- package/packs/serene-bells/sounds/wind-chime-3.ogg +0 -0
- package/packs/serene-tones/manifest.json +47 -0
- package/packs/serene-tones/sounds/chime-1.ogg +0 -0
- package/packs/serene-tones/sounds/chime-2.ogg +0 -0
- package/packs/serene-tones/sounds/chime-3.ogg +0 -0
- package/packs/serene-tones/sounds/resonance-1.ogg +0 -0
- package/packs/serene-tones/sounds/resonance-2.ogg +0 -0
- package/packs/serene-tones/sounds/resonance-3.ogg +0 -0
- package/packs/serene-tones/sounds/resonance-4.ogg +0 -0
- package/packs/serene-tones/sounds/tone-1.ogg +0 -0
- package/packs/serene-tones/sounds/tone-2.ogg +0 -0
- package/packs/serene-tones/sounds/tone-3.ogg +0 -0
- package/packs/serene-tones/sounds/tone-4.ogg +0 -0
- package/packs/serene-tones/sounds/tone-5.ogg +0 -0
- package/packs/serene-water/manifest.json +47 -0
- package/packs/serene-water/sounds/bamboo-1.ogg +0 -0
- package/packs/serene-water/sounds/bamboo-2.ogg +0 -0
- package/packs/serene-water/sounds/bowl-1.ogg +0 -0
- package/packs/serene-water/sounds/bowl-2.ogg +0 -0
- package/packs/serene-water/sounds/bowl-3.ogg +0 -0
- package/packs/serene-water/sounds/bowl-4.ogg +0 -0
- package/packs/serene-water/sounds/drip-1.ogg +0 -0
- package/packs/serene-water/sounds/drip-2.ogg +0 -0
- package/packs/serene-water/sounds/vessel-1.ogg +0 -0
- package/packs/serene-water/sounds/vessel-2.ogg +0 -0
- package/packs/serene-water/sounds/water-drop-1.ogg +0 -0
- package/packs/serene-water/sounds/water-drop-2.ogg +0 -0
- package/src/cli/completions.js +9 -2
- package/src/cli/doctor.js +2 -1
- package/src/cli/stats.js +4 -2
- package/src/notify.js +9 -4
- package/src/player.js +2 -1
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "office-digital",
|
|
3
|
+
"description": "Digital pings, alerts, and chimes",
|
|
4
|
+
"version": "1.0.0",
|
|
5
|
+
"license": "CC0-1.0",
|
|
6
|
+
"credits": "Kenney (https://kenney.nl)",
|
|
7
|
+
"category": "digital",
|
|
8
|
+
"sounds": [
|
|
9
|
+
"sounds/alert-1.ogg",
|
|
10
|
+
"sounds/alert-2.ogg",
|
|
11
|
+
"sounds/ascend-1.ogg",
|
|
12
|
+
"sounds/ascend-2.ogg",
|
|
13
|
+
"sounds/ascend-3.ogg",
|
|
14
|
+
"sounds/chime.ogg",
|
|
15
|
+
"sounds/descend.ogg",
|
|
16
|
+
"sounds/down-tone.ogg",
|
|
17
|
+
"sounds/low-alert.ogg",
|
|
18
|
+
"sounds/ping-1.ogg",
|
|
19
|
+
"sounds/ping-2.ogg",
|
|
20
|
+
"sounds/ping-3.ogg",
|
|
21
|
+
"sounds/random-tone.ogg",
|
|
22
|
+
"sounds/up-tone.ogg",
|
|
23
|
+
"sounds/zap-tone.ogg"
|
|
24
|
+
],
|
|
25
|
+
"events": {
|
|
26
|
+
"done": [
|
|
27
|
+
"sounds/alert-1.ogg",
|
|
28
|
+
"sounds/alert-2.ogg",
|
|
29
|
+
"sounds/ascend-1.ogg",
|
|
30
|
+
"sounds/ascend-2.ogg"
|
|
31
|
+
],
|
|
32
|
+
"permission": [
|
|
33
|
+
"sounds/ascend-3.ogg",
|
|
34
|
+
"sounds/chime.ogg",
|
|
35
|
+
"sounds/descend.ogg"
|
|
36
|
+
],
|
|
37
|
+
"complete": [
|
|
38
|
+
"sounds/down-tone.ogg",
|
|
39
|
+
"sounds/low-alert.ogg",
|
|
40
|
+
"sounds/ping-1.ogg"
|
|
41
|
+
],
|
|
42
|
+
"error": [
|
|
43
|
+
"sounds/ping-2.ogg",
|
|
44
|
+
"sounds/ping-3.ogg",
|
|
45
|
+
"sounds/random-tone.ogg"
|
|
46
|
+
],
|
|
47
|
+
"blocked": [
|
|
48
|
+
"sounds/up-tone.ogg",
|
|
49
|
+
"sounds/zap-tone.ogg"
|
|
50
|
+
]
|
|
51
|
+
}
|
|
52
|
+
}
|
|
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
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "office-mechanical",
|
|
3
|
+
"description": "Machines, stamps, taps, and tools",
|
|
4
|
+
"version": "1.0.0",
|
|
5
|
+
"license": "CC0-1.0",
|
|
6
|
+
"credits": "rubberduck (https://opengameart.org/content/100-cc0-sfx)",
|
|
7
|
+
"category": "mechanical",
|
|
8
|
+
"sounds": [
|
|
9
|
+
"sounds/clamp.ogg",
|
|
10
|
+
"sounds/hum-1.ogg",
|
|
11
|
+
"sounds/hum-2.ogg",
|
|
12
|
+
"sounds/machine-1.ogg",
|
|
13
|
+
"sounds/machine-2.ogg",
|
|
14
|
+
"sounds/machine-3.ogg",
|
|
15
|
+
"sounds/ratchet.ogg",
|
|
16
|
+
"sounds/stamp-1.ogg",
|
|
17
|
+
"sounds/stamp-2.ogg",
|
|
18
|
+
"sounds/stamp-3.ogg",
|
|
19
|
+
"sounds/tap-1.ogg",
|
|
20
|
+
"sounds/tap-2.ogg",
|
|
21
|
+
"sounds/tap-3.ogg",
|
|
22
|
+
"sounds/tap-4.ogg",
|
|
23
|
+
"sounds/wrench.ogg"
|
|
24
|
+
],
|
|
25
|
+
"events": {
|
|
26
|
+
"done": [
|
|
27
|
+
"sounds/clamp.ogg",
|
|
28
|
+
"sounds/hum-1.ogg",
|
|
29
|
+
"sounds/hum-2.ogg",
|
|
30
|
+
"sounds/machine-1.ogg"
|
|
31
|
+
],
|
|
32
|
+
"permission": [
|
|
33
|
+
"sounds/machine-2.ogg",
|
|
34
|
+
"sounds/machine-3.ogg",
|
|
35
|
+
"sounds/ratchet.ogg"
|
|
36
|
+
],
|
|
37
|
+
"complete": [
|
|
38
|
+
"sounds/stamp-1.ogg",
|
|
39
|
+
"sounds/stamp-2.ogg",
|
|
40
|
+
"sounds/stamp-3.ogg"
|
|
41
|
+
],
|
|
42
|
+
"error": [
|
|
43
|
+
"sounds/tap-1.ogg",
|
|
44
|
+
"sounds/tap-2.ogg",
|
|
45
|
+
"sounds/tap-3.ogg"
|
|
46
|
+
],
|
|
47
|
+
"blocked": [
|
|
48
|
+
"sounds/tap-4.ogg",
|
|
49
|
+
"sounds/wrench.ogg"
|
|
50
|
+
]
|
|
51
|
+
}
|
|
52
|
+
}
|
|
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
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "office-minimal",
|
|
3
|
+
"description": "Subtle clicks, ticks, and toggles",
|
|
4
|
+
"version": "1.0.0",
|
|
5
|
+
"license": "CC0-1.0",
|
|
6
|
+
"credits": "Kenney (https://kenney.nl)",
|
|
7
|
+
"category": "minimal",
|
|
8
|
+
"sounds": [
|
|
9
|
+
"sounds/drop-1.ogg",
|
|
10
|
+
"sounds/drop-2.ogg",
|
|
11
|
+
"sounds/scroll-1.ogg",
|
|
12
|
+
"sounds/scroll-2.ogg",
|
|
13
|
+
"sounds/select-1.ogg",
|
|
14
|
+
"sounds/select-2.ogg",
|
|
15
|
+
"sounds/select-3.ogg",
|
|
16
|
+
"sounds/switch-1.ogg",
|
|
17
|
+
"sounds/switch-2.ogg",
|
|
18
|
+
"sounds/tick-1.ogg",
|
|
19
|
+
"sounds/tick-2.ogg",
|
|
20
|
+
"sounds/tick-3.ogg",
|
|
21
|
+
"sounds/toggle-1.ogg",
|
|
22
|
+
"sounds/toggle-2.ogg",
|
|
23
|
+
"sounds/toggle-3.ogg"
|
|
24
|
+
],
|
|
25
|
+
"events": {
|
|
26
|
+
"done": [
|
|
27
|
+
"sounds/drop-1.ogg",
|
|
28
|
+
"sounds/drop-2.ogg",
|
|
29
|
+
"sounds/scroll-1.ogg",
|
|
30
|
+
"sounds/scroll-2.ogg"
|
|
31
|
+
],
|
|
32
|
+
"permission": [
|
|
33
|
+
"sounds/select-1.ogg",
|
|
34
|
+
"sounds/select-2.ogg",
|
|
35
|
+
"sounds/select-3.ogg"
|
|
36
|
+
],
|
|
37
|
+
"complete": [
|
|
38
|
+
"sounds/switch-1.ogg",
|
|
39
|
+
"sounds/switch-2.ogg",
|
|
40
|
+
"sounds/tick-1.ogg"
|
|
41
|
+
],
|
|
42
|
+
"error": [
|
|
43
|
+
"sounds/tick-2.ogg",
|
|
44
|
+
"sounds/tick-3.ogg",
|
|
45
|
+
"sounds/toggle-1.ogg"
|
|
46
|
+
],
|
|
47
|
+
"blocked": [
|
|
48
|
+
"sounds/toggle-2.ogg",
|
|
49
|
+
"sounds/toggle-3.ogg"
|
|
50
|
+
]
|
|
51
|
+
}
|
|
52
|
+
}
|
|
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
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "serene-bells",
|
|
3
|
+
"description": "Temple bells, gongs, and crystal chimes",
|
|
4
|
+
"version": "1.0.0",
|
|
5
|
+
"license": "CC0-1.0",
|
|
6
|
+
"credits": "rubberduck (https://opengameart.org/content/100-cc0-sfx)",
|
|
7
|
+
"category": "bells",
|
|
8
|
+
"sounds": [
|
|
9
|
+
"sounds/crystal-1.ogg",
|
|
10
|
+
"sounds/crystal-2.ogg",
|
|
11
|
+
"sounds/crystal-3.ogg",
|
|
12
|
+
"sounds/crystal-4.ogg",
|
|
13
|
+
"sounds/crystal-5.ogg",
|
|
14
|
+
"sounds/gong-1.ogg",
|
|
15
|
+
"sounds/gong-2.ogg",
|
|
16
|
+
"sounds/temple-bell-1.ogg",
|
|
17
|
+
"sounds/temple-bell-2.ogg",
|
|
18
|
+
"sounds/temple-bell-3.ogg",
|
|
19
|
+
"sounds/wind-chime-1.ogg",
|
|
20
|
+
"sounds/wind-chime-2.ogg",
|
|
21
|
+
"sounds/wind-chime-3.ogg"
|
|
22
|
+
],
|
|
23
|
+
"events": {
|
|
24
|
+
"done": [
|
|
25
|
+
"sounds/crystal-1.ogg",
|
|
26
|
+
"sounds/crystal-2.ogg",
|
|
27
|
+
"sounds/crystal-3.ogg",
|
|
28
|
+
"sounds/crystal-4.ogg"
|
|
29
|
+
],
|
|
30
|
+
"permission": [
|
|
31
|
+
"sounds/crystal-5.ogg",
|
|
32
|
+
"sounds/gong-1.ogg",
|
|
33
|
+
"sounds/gong-2.ogg"
|
|
34
|
+
],
|
|
35
|
+
"complete": [
|
|
36
|
+
"sounds/temple-bell-1.ogg",
|
|
37
|
+
"sounds/temple-bell-2.ogg",
|
|
38
|
+
"sounds/temple-bell-3.ogg"
|
|
39
|
+
],
|
|
40
|
+
"error": [
|
|
41
|
+
"sounds/wind-chime-1.ogg",
|
|
42
|
+
"sounds/wind-chime-2.ogg",
|
|
43
|
+
"sounds/wind-chime-3.ogg"
|
|
44
|
+
],
|
|
45
|
+
"blocked": [
|
|
46
|
+
"sounds/crystal-1.ogg"
|
|
47
|
+
]
|
|
48
|
+
}
|
|
49
|
+
}
|
|
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
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "serene-tones",
|
|
3
|
+
"description": "Soft metallic tones, chimes, and resonances",
|
|
4
|
+
"version": "1.0.0",
|
|
5
|
+
"license": "CC0-1.0",
|
|
6
|
+
"credits": "rubberduck (https://opengameart.org/content/100-cc0-sfx)",
|
|
7
|
+
"category": "tones",
|
|
8
|
+
"sounds": [
|
|
9
|
+
"sounds/chime-1.ogg",
|
|
10
|
+
"sounds/chime-2.ogg",
|
|
11
|
+
"sounds/chime-3.ogg",
|
|
12
|
+
"sounds/resonance-1.ogg",
|
|
13
|
+
"sounds/resonance-2.ogg",
|
|
14
|
+
"sounds/resonance-3.ogg",
|
|
15
|
+
"sounds/resonance-4.ogg",
|
|
16
|
+
"sounds/tone-1.ogg",
|
|
17
|
+
"sounds/tone-2.ogg",
|
|
18
|
+
"sounds/tone-3.ogg",
|
|
19
|
+
"sounds/tone-4.ogg",
|
|
20
|
+
"sounds/tone-5.ogg"
|
|
21
|
+
],
|
|
22
|
+
"events": {
|
|
23
|
+
"done": [
|
|
24
|
+
"sounds/chime-1.ogg",
|
|
25
|
+
"sounds/chime-2.ogg",
|
|
26
|
+
"sounds/chime-3.ogg",
|
|
27
|
+
"sounds/resonance-1.ogg"
|
|
28
|
+
],
|
|
29
|
+
"permission": [
|
|
30
|
+
"sounds/resonance-2.ogg",
|
|
31
|
+
"sounds/resonance-3.ogg",
|
|
32
|
+
"sounds/resonance-4.ogg"
|
|
33
|
+
],
|
|
34
|
+
"complete": [
|
|
35
|
+
"sounds/tone-1.ogg",
|
|
36
|
+
"sounds/tone-2.ogg",
|
|
37
|
+
"sounds/tone-3.ogg"
|
|
38
|
+
],
|
|
39
|
+
"error": [
|
|
40
|
+
"sounds/tone-4.ogg",
|
|
41
|
+
"sounds/tone-5.ogg"
|
|
42
|
+
],
|
|
43
|
+
"blocked": [
|
|
44
|
+
"sounds/chime-1.ogg"
|
|
45
|
+
]
|
|
46
|
+
}
|
|
47
|
+
}
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "serene-water",
|
|
3
|
+
"description": "Water drops, drips, and gentle splashes",
|
|
4
|
+
"version": "1.0.0",
|
|
5
|
+
"license": "CC0-1.0",
|
|
6
|
+
"credits": "rubberduck (https://opengameart.org/content/100-cc0-sfx)",
|
|
7
|
+
"category": "water",
|
|
8
|
+
"sounds": [
|
|
9
|
+
"sounds/bamboo-1.ogg",
|
|
10
|
+
"sounds/bamboo-2.ogg",
|
|
11
|
+
"sounds/bowl-1.ogg",
|
|
12
|
+
"sounds/bowl-2.ogg",
|
|
13
|
+
"sounds/bowl-3.ogg",
|
|
14
|
+
"sounds/bowl-4.ogg",
|
|
15
|
+
"sounds/drip-1.ogg",
|
|
16
|
+
"sounds/drip-2.ogg",
|
|
17
|
+
"sounds/vessel-1.ogg",
|
|
18
|
+
"sounds/vessel-2.ogg",
|
|
19
|
+
"sounds/water-drop-1.ogg",
|
|
20
|
+
"sounds/water-drop-2.ogg"
|
|
21
|
+
],
|
|
22
|
+
"events": {
|
|
23
|
+
"done": [
|
|
24
|
+
"sounds/bamboo-1.ogg",
|
|
25
|
+
"sounds/bamboo-2.ogg",
|
|
26
|
+
"sounds/bowl-1.ogg",
|
|
27
|
+
"sounds/bowl-2.ogg"
|
|
28
|
+
],
|
|
29
|
+
"permission": [
|
|
30
|
+
"sounds/bowl-3.ogg",
|
|
31
|
+
"sounds/bowl-4.ogg",
|
|
32
|
+
"sounds/drip-1.ogg"
|
|
33
|
+
],
|
|
34
|
+
"complete": [
|
|
35
|
+
"sounds/drip-2.ogg",
|
|
36
|
+
"sounds/vessel-1.ogg",
|
|
37
|
+
"sounds/vessel-2.ogg"
|
|
38
|
+
],
|
|
39
|
+
"error": [
|
|
40
|
+
"sounds/water-drop-1.ogg",
|
|
41
|
+
"sounds/water-drop-2.ogg"
|
|
42
|
+
],
|
|
43
|
+
"blocked": [
|
|
44
|
+
"sounds/bamboo-1.ogg"
|
|
45
|
+
]
|
|
46
|
+
}
|
|
47
|
+
}
|
|
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/src/cli/completions.js
CHANGED
|
@@ -17,12 +17,14 @@ Install:
|
|
|
17
17
|
const COMMANDS = [
|
|
18
18
|
'play', 'list', 'select', 'browse', 'search', 'sounds',
|
|
19
19
|
'use', 'preview', 'test-events', 'theme', 'config',
|
|
20
|
-
'init', '
|
|
20
|
+
'init', 'setup', 'demo', 'stats', 'create', 'install', 'uninstall',
|
|
21
|
+
'random-pack', 'doctor', 'update', 'cesp', 'completions',
|
|
21
22
|
];
|
|
22
23
|
|
|
23
24
|
const THEMES = [
|
|
24
25
|
'retro', 'sci-fi', 'arena', 'fantasy', 'ancient',
|
|
25
|
-
'professional', '8bit', 'space', '
|
|
26
|
+
'professional', '8bit', 'space', 'developer', 'arcade',
|
|
27
|
+
'tabletop', 'tournament', 'chaos', 'reset',
|
|
26
28
|
];
|
|
27
29
|
|
|
28
30
|
const EVENTS = ['done', 'permission', 'complete', 'error', 'blocked'];
|
|
@@ -92,6 +94,11 @@ _pingthings() {
|
|
|
92
94
|
'uninstall:Remove a user-installed pack'
|
|
93
95
|
'random-pack:Switch to a random pack'
|
|
94
96
|
'doctor:Diagnose audio setup'
|
|
97
|
+
'setup:Configure hooks for any IDE'
|
|
98
|
+
'demo:Play one sound from every pack'
|
|
99
|
+
'stats:Show usage statistics'
|
|
100
|
+
'update:Check for new versions'
|
|
101
|
+
'cesp:Generate CESP manifests'
|
|
95
102
|
'completions:Generate shell completions'
|
|
96
103
|
)
|
|
97
104
|
themes=(${THEMES.join(' ')})
|
package/src/cli/doctor.js
CHANGED
|
@@ -33,7 +33,8 @@ function check(label, fn) {
|
|
|
33
33
|
|
|
34
34
|
function commandExists(cmd) {
|
|
35
35
|
try {
|
|
36
|
-
|
|
36
|
+
const checker = platform() === 'win32' ? 'where' : 'which';
|
|
37
|
+
execFileSync(checker, [cmd], { stdio: 'pipe' });
|
|
37
38
|
return true;
|
|
38
39
|
} catch {
|
|
39
40
|
return false;
|
package/src/cli/stats.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { existsSync, readFileSync, writeFileSync } from 'node:fs';
|
|
1
|
+
import { existsSync, readFileSync, writeFileSync, renameSync } from 'node:fs';
|
|
2
2
|
import { join } from 'node:path';
|
|
3
3
|
import { readConfig, getConfigDir } from '../config.js';
|
|
4
4
|
import { listPacks } from '../packs.js';
|
|
@@ -40,7 +40,9 @@ export function recordPlay(packName, event) {
|
|
|
40
40
|
stats.dailyPlays[today] = (stats.dailyPlays[today] || 0) + 1;
|
|
41
41
|
|
|
42
42
|
try {
|
|
43
|
-
|
|
43
|
+
const tmpPath = statsPath + '.tmp';
|
|
44
|
+
writeFileSync(tmpPath, JSON.stringify(stats, null, 2) + '\n', 'utf8');
|
|
45
|
+
renameSync(tmpPath, statsPath);
|
|
44
46
|
} catch {}
|
|
45
47
|
}
|
|
46
48
|
|
package/src/notify.js
CHANGED
|
@@ -1,19 +1,24 @@
|
|
|
1
1
|
import { spawn } from 'node:child_process';
|
|
2
2
|
import { platform } from 'node:os';
|
|
3
3
|
|
|
4
|
+
function sanitize(str) {
|
|
5
|
+
return str.replace(/[\\"]/g, '').replace(/[^\x20-\x7E]/g, '');
|
|
6
|
+
}
|
|
7
|
+
|
|
4
8
|
export function sendNotification(title, message) {
|
|
5
9
|
const os = platform();
|
|
10
|
+
const safeTitle = sanitize(title);
|
|
11
|
+
const safeMessage = sanitize(message);
|
|
6
12
|
|
|
7
13
|
if (os === 'darwin') {
|
|
8
14
|
spawn('osascript', [
|
|
9
15
|
'-e',
|
|
10
|
-
`display notification "${
|
|
11
|
-
], { detached: true, stdio: 'ignore' }).unref();
|
|
16
|
+
`display notification "${safeMessage}" with title "${safeTitle}"`,
|
|
17
|
+
], { detached: true, stdio: 'ignore' }).on('error', () => {}).unref();
|
|
12
18
|
} else if (os === 'linux') {
|
|
13
|
-
spawn('notify-send', [
|
|
19
|
+
spawn('notify-send', [safeTitle, safeMessage], {
|
|
14
20
|
detached: true,
|
|
15
21
|
stdio: 'ignore',
|
|
16
22
|
}).on('error', () => {}).unref();
|
|
17
23
|
}
|
|
18
|
-
// Windows: no native CLI notification without dependencies, skip for now
|
|
19
24
|
}
|
package/src/player.js
CHANGED
|
@@ -4,7 +4,8 @@ import { platform } from 'node:os';
|
|
|
4
4
|
|
|
5
5
|
function commandExists(cmd) {
|
|
6
6
|
try {
|
|
7
|
-
|
|
7
|
+
const checker = platform() === 'win32' ? 'where' : 'which';
|
|
8
|
+
execFileSync(checker, [cmd], { stdio: 'pipe' });
|
|
8
9
|
return true;
|
|
9
10
|
} catch {
|
|
10
11
|
return false;
|