clawd-desktop 1.0.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.
Files changed (68) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +58 -0
  3. package/assets/LICENSE-clawd +22 -0
  4. package/assets/gif/clawd-building.gif +0 -0
  5. package/assets/gif/clawd-carrying.gif +0 -0
  6. package/assets/gif/clawd-conducting.gif +0 -0
  7. package/assets/gif/clawd-debugger.gif +0 -0
  8. package/assets/gif/clawd-error.gif +0 -0
  9. package/assets/gif/clawd-happy.gif +0 -0
  10. package/assets/gif/clawd-idle-reading.gif +0 -0
  11. package/assets/gif/clawd-idle.gif +0 -0
  12. package/assets/gif/clawd-juggling.gif +0 -0
  13. package/assets/gif/clawd-notification.gif +0 -0
  14. package/assets/gif/clawd-react-annoyed.gif +0 -0
  15. package/assets/gif/clawd-react-double-jump.gif +0 -0
  16. package/assets/gif/clawd-sleeping.gif +0 -0
  17. package/assets/gif/clawd-sweeping.gif +0 -0
  18. package/assets/gif/clawd-thinking.gif +0 -0
  19. package/assets/gif/clawd-typing.gif +0 -0
  20. package/assets/svg/clawd-about-hero.svg +202 -0
  21. package/assets/svg/clawd-collapse-sleep.svg +247 -0
  22. package/assets/svg/clawd-error.svg +94 -0
  23. package/assets/svg/clawd-happy.svg +161 -0
  24. package/assets/svg/clawd-idle-collapse.svg +101 -0
  25. package/assets/svg/clawd-idle-doze.svg +72 -0
  26. package/assets/svg/clawd-idle-follow.svg +64 -0
  27. package/assets/svg/clawd-idle-living.svg +196 -0
  28. package/assets/svg/clawd-idle-look.svg +115 -0
  29. package/assets/svg/clawd-idle-reading.svg +201 -0
  30. package/assets/svg/clawd-idle-yawn.svg +158 -0
  31. package/assets/svg/clawd-mini-alert.svg +129 -0
  32. package/assets/svg/clawd-mini-crabwalk.svg +76 -0
  33. package/assets/svg/clawd-mini-enter-sleep.svg +65 -0
  34. package/assets/svg/clawd-mini-enter.svg +115 -0
  35. package/assets/svg/clawd-mini-happy.svg +124 -0
  36. package/assets/svg/clawd-mini-idle.svg +83 -0
  37. package/assets/svg/clawd-mini-peek.svg +82 -0
  38. package/assets/svg/clawd-mini-sleep.svg +112 -0
  39. package/assets/svg/clawd-mini-typing.svg +153 -0
  40. package/assets/svg/clawd-notification.svg +149 -0
  41. package/assets/svg/clawd-react-annoyed.svg +167 -0
  42. package/assets/svg/clawd-react-double-jump.svg +229 -0
  43. package/assets/svg/clawd-react-double.svg +108 -0
  44. package/assets/svg/clawd-react-drag.svg +102 -0
  45. package/assets/svg/clawd-react-left.svg +102 -0
  46. package/assets/svg/clawd-react-right.svg +102 -0
  47. package/assets/svg/clawd-sleeping.svg +118 -0
  48. package/assets/svg/clawd-static-base.svg +21 -0
  49. package/assets/svg/clawd-wake.svg +277 -0
  50. package/assets/svg/clawd-working-building.svg +329 -0
  51. package/assets/svg/clawd-working-carrying.svg +178 -0
  52. package/assets/svg/clawd-working-conducting.svg +220 -0
  53. package/assets/svg/clawd-working-debugger.svg +245 -0
  54. package/assets/svg/clawd-working-juggling.svg +183 -0
  55. package/assets/svg/clawd-working-sweeping.svg +248 -0
  56. package/assets/svg/clawd-working-thinking.svg +196 -0
  57. package/assets/svg/clawd-working-typing.svg +273 -0
  58. package/assets/svg/clawd-working-ultrathink.svg +166 -0
  59. package/assets/svg/clawd-working-wizard.svg +98 -0
  60. package/assets/tray-icon.ico +0 -0
  61. package/bin/claude-pet.js +6 -0
  62. package/main.js +86 -0
  63. package/package.json +38 -0
  64. package/preload.js +6 -0
  65. package/renderer/avatar.js +55 -0
  66. package/renderer/index.html +14 -0
  67. package/renderer/motion.js +24 -0
  68. package/renderer/style.css +104 -0
@@ -0,0 +1,118 @@
1
+ <svg xmlns="http://www.w3.org/2000/svg" viewBox="-15 -25 45 45" width="500" height="500">
2
+ <defs>
3
+ <style>
4
+ /* Slow, rhythmic deep breathing animation */
5
+ .breathe {
6
+ transform-origin: 7.5px 15px; /* Pivot at the floor to expand upwards */
7
+ animation: breathe-squash 4.5s infinite ease-in-out;
8
+ }
9
+
10
+ /* Shadow expands slightly as the body inflates */
11
+ .shadow-breathe {
12
+ transform-origin: 7.5px 15.5px;
13
+ animation: shadow-pulse 4.5s infinite ease-in-out;
14
+ }
15
+
16
+ /* Zzz Particle Base Styles */
17
+ .z-particle {
18
+ opacity: 0;
19
+ }
20
+ .z1 { animation: float-1 6s infinite ease-in-out; animation-delay: 0s; }
21
+ .z2 { animation: float-2 6s infinite ease-in-out; animation-delay: 2s; }
22
+ .z3 { animation: float-3 6s infinite ease-in-out; animation-delay: 4s; }
23
+
24
+ /* Breathing Keyframes (Slow inhale, hold, exhale, pause) */
25
+ @keyframes breathe-squash {
26
+ 0%, 80%, 100% { transform: scale(1, 1); }
27
+ 30%, 40% { transform: scale(1.02, 1.25); } /* Chest expands/inflates */
28
+ }
29
+
30
+ @keyframes shadow-pulse {
31
+ 0%, 80%, 100% { transform: scaleX(1); opacity: 0.4; }
32
+ 30%, 40% { transform: scaleX(1.05); opacity: 0.5; }
33
+ }
34
+
35
+ /* Swaying and fading floating Z keyframes (Adjusted for lowered head) */
36
+ @keyframes float-1 {
37
+ 0% { transform: translate(5px, 8px) scale(0.4); opacity: 0; }
38
+ 10% { opacity: 1; }
39
+ 30% { transform: translate(9px, 4px) scale(0.6); }
40
+ 50% { transform: translate(4px, 0px) scale(0.8); }
41
+ 70% { transform: translate(8px, -4px) scale(1.0); }
42
+ 90% { opacity: 0.8; }
43
+ 100% { transform: translate(6px, -8px) scale(1.1); opacity: 0; }
44
+ }
45
+
46
+ @keyframes float-2 {
47
+ 0% { transform: translate(8px, 9px) scale(0.3); opacity: 0; }
48
+ 10% { opacity: 1; }
49
+ 30% { transform: translate(5px, 5px) scale(0.5); }
50
+ 50% { transform: translate(9px, 1px) scale(0.7); }
51
+ 70% { transform: translate(6px, -3px) scale(0.9); }
52
+ 90% { opacity: 0.8; }
53
+ 100% { transform: translate(8px, -7px) scale(1.0); opacity: 0; }
54
+ }
55
+
56
+ @keyframes float-3 {
57
+ 0% { transform: translate(6px, 7px) scale(0.5); opacity: 0; }
58
+ 10% { opacity: 1; }
59
+ 30% { transform: translate(9px, 3px) scale(0.7); }
60
+ 50% { transform: translate(4px, -1px) scale(0.9); }
61
+ 70% { transform: translate(8px, -5px) scale(1.1); }
62
+ 90% { opacity: 0.8; }
63
+ 100% { transform: translate(5px, -9px) scale(1.2); opacity: 0; }
64
+ }
65
+ </style>
66
+
67
+ <!-- Pixel Art "Z" Definitions -->
68
+ <g id="pixel-z">
69
+ <rect x="0" y="0" width="4" height="1" />
70
+ <rect x="2" y="1" width="1" height="1" />
71
+ <rect x="1" y="2" width="1" height="1" />
72
+ <rect x="0" y="3" width="4" height="1" />
73
+ </g>
74
+
75
+ <g id="pixel-z-small">
76
+ <rect x="0" y="0" width="3" height="1" />
77
+ <rect x="1" y="1" width="1" height="1" />
78
+ <rect x="0" y="2" width="3" height="1" />
79
+ </g>
80
+ </defs>
81
+
82
+ <!-- Ground Shadow (Widened for the splooted posture) -->
83
+ <rect id="ground-shadow" class="shadow-breathe" x="-1" y="15" width="17" height="1" fill="#000000" />
84
+
85
+ <!-- Floating Zzz Bubbles -->
86
+ <g class="zzz-particles">
87
+ <use href="#pixel-z" class="z-particle z1" fill="#90A4AE" />
88
+ <use href="#pixel-z-small" class="z-particle z2" fill="#B0BEC5" />
89
+ <use href="#pixel-z" class="z-particle z3" fill="#CFD8DC" />
90
+ </g>
91
+
92
+ <!-- Splooted / Melted Sleeping Pose -->
93
+ <g class="breathe">
94
+ <!-- Legs pointing up from behind (Relaxed Sploot) -->
95
+ <g fill="#DE886D">
96
+ <rect id="outer-left-leg-up" x="3" y="9" width="1" height="1"/>
97
+ <rect id="inner-left-leg-up" x="5" y="9" width="1" height="1"/>
98
+ <rect id="inner-right-leg-up" x="9" y="9" width="1" height="1"/>
99
+ <rect id="outer-right-leg-up" x="11" y="9" width="1" height="1"/>
100
+ </g>
101
+
102
+ <!-- Squashed Body Resting on the Floor -->
103
+ <g fill="#DE886D">
104
+ <!-- Main flattened torso -->
105
+ <rect id="torso-sploot" x="1" y="10" width="13" height="5"/>
106
+
107
+ <!-- Arms spread flat on the ground -->
108
+ <rect id="left-arm-sploot" x="-1" y="13" width="2" height="2"/>
109
+ <rect id="right-arm-sploot" x="14" y="13" width="2" height="2"/>
110
+ </g>
111
+
112
+ <!-- Ultra-Thin Shut Eyes (Dashes) -->
113
+ <g fill="#000000">
114
+ <rect id="left-eye-shut" x="3.5" y="12.5" width="2" height="0.4"/>
115
+ <rect id="right-eye-shut" x="9.5" y="12.5" width="2" height="0.4"/>
116
+ </g>
117
+ </g>
118
+ </svg>
@@ -0,0 +1,21 @@
1
+ <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 15 16" width="300" height="320">
2
+ <rect id="ground-shadow" x="3" y="15" width="9" height="1" fill="#000000" opacity="0.5"/>
3
+
4
+ <g id="master-group">
5
+ <g id="body-color-group" fill="#DE886D">
6
+ <rect id="torso" x="2" y="6" width="11" height="7"/>
7
+ <rect id="left-arm" x="0" y="9" width="2" height="2"/>
8
+ <rect id="right-arm" x="13" y="9" width="2" height="2"/>
9
+
10
+ <rect id="outer-left-leg" x="3" y="13" width="1" height="2"/>
11
+ <rect id="inner-left-leg" x="5" y="13" width="1" height="2"/>
12
+ <rect id="inner-right-leg" x="9" y="13" width="1" height="2"/>
13
+ <rect id="outer-right-leg" x="11" y="13" width="1" height="2"/>
14
+ </g>
15
+
16
+ <g id="eyes-color-group" fill="#000000">
17
+ <rect id="left-eye" x="4" y="8" width="1" height="2"/>
18
+ <rect id="right-eye" x="10" y="8" width="1" height="2"/>
19
+ </g>
20
+ </g>
21
+ </svg>
@@ -0,0 +1,277 @@
1
+ <svg xmlns="http://www.w3.org/2000/svg" viewBox="-15 -25 45 45" width="500" height="500" shape-rendering="crispEdges">
2
+ <defs>
3
+ <style>
4
+ .once {
5
+ animation-duration: 1.5s;
6
+ animation-fill-mode: forwards;
7
+ animation-iteration-count: 1;
8
+ }
9
+
10
+ .scale-top-left {
11
+ transform-box: fill-box;
12
+ transform-origin: top left;
13
+ }
14
+
15
+ .shadow {
16
+ transform-origin: 7.5px 15.5px;
17
+ animation-name: shadow-wake;
18
+ animation-timing-function: linear;
19
+ }
20
+
21
+ .body-motion {
22
+ transform-origin: 7.5px 15px;
23
+ animation-name: body-motion;
24
+ animation-timing-function: cubic-bezier(0.24, 0.8, 0.24, 1);
25
+ }
26
+
27
+ .torso-shift {
28
+ animation: torso-shift 1.5s linear forwards;
29
+ }
30
+
31
+ .torso-shape {
32
+ animation: torso-shape 1.5s linear forwards;
33
+ }
34
+
35
+ .arm-left {
36
+ animation: arm-left 1.5s linear forwards;
37
+ }
38
+
39
+ .arm-right {
40
+ animation: arm-right 1.5s linear forwards;
41
+ }
42
+
43
+ .leg-shift {
44
+ animation: leg-shift 1.5s linear forwards;
45
+ }
46
+
47
+ .leg-grow {
48
+ animation: leg-grow 1.5s linear forwards;
49
+ }
50
+
51
+ .eye-shift {
52
+ animation: eye-shift 1.5s linear forwards;
53
+ }
54
+
55
+ .eye-shape {
56
+ animation: eye-shape 1.5s linear forwards;
57
+ }
58
+
59
+ @keyframes shadow-wake {
60
+ 0% {
61
+ opacity: 0.4;
62
+ transform: scaleX(1);
63
+ }
64
+ 20% {
65
+ opacity: 0.47;
66
+ transform: scaleX(0.56);
67
+ }
68
+ 33.333% {
69
+ opacity: 0.54;
70
+ transform: scaleX(0.42);
71
+ }
72
+ 46.667% {
73
+ opacity: 0.48;
74
+ transform: scaleX(0.48);
75
+ }
76
+ 56% {
77
+ opacity: 0.52;
78
+ transform: scaleX(0.56);
79
+ }
80
+ 66.667%, 100% {
81
+ opacity: 0.5;
82
+ transform: scaleX(0.5294);
83
+ }
84
+ }
85
+
86
+ @keyframes body-motion {
87
+ 0% {
88
+ transform: translate(0, 0) scale(1, 1) rotate(0deg);
89
+ }
90
+ 6.667% {
91
+ transform: translate(0, 0.35px) scale(1.03, 0.96) rotate(0deg);
92
+ }
93
+ 20% {
94
+ transform: translate(0, -2.6px) scale(0.98, 1.04) rotate(-6deg);
95
+ }
96
+ 33.333% {
97
+ transform: translate(0, -4.1px) scale(0.9, 1.22) rotate(2deg);
98
+ }
99
+ 46.667% {
100
+ transform: translate(0, -2px) scale(0.95, 1.11) rotate(0deg);
101
+ }
102
+ 54% {
103
+ transform: translate(0, -0.55px) scale(1.02, 0.98) rotate(-4deg);
104
+ }
105
+ 60% {
106
+ transform: translate(0, -0.2px) scale(0.99, 1.02) rotate(2.5deg);
107
+ }
108
+ 66.667%, 100% {
109
+ transform: translate(0, 0) scale(1, 1) rotate(0deg);
110
+ }
111
+ }
112
+
113
+ @keyframes torso-shift {
114
+ 0% {
115
+ transform: translate(-1px, 4px);
116
+ }
117
+ 8% {
118
+ transform: translate(-0.82px, 3.4px);
119
+ }
120
+ 20%, 100% {
121
+ transform: translate(0, 0);
122
+ }
123
+ }
124
+
125
+ @keyframes torso-shape {
126
+ 0% {
127
+ transform: scale(1.1818, 0.7143);
128
+ }
129
+ 8% {
130
+ transform: scale(1.14, 0.76);
131
+ }
132
+ 20%, 100% {
133
+ transform: scale(1, 1);
134
+ }
135
+ }
136
+
137
+ @keyframes arm-left {
138
+ 0% {
139
+ transform: translate(-1px, 4px);
140
+ }
141
+ 8% {
142
+ transform: translate(-0.8px, 3.4px);
143
+ }
144
+ 20%, 100% {
145
+ transform: translate(0, 0);
146
+ }
147
+ }
148
+
149
+ @keyframes arm-right {
150
+ 0% {
151
+ transform: translate(1px, 4px);
152
+ }
153
+ 8% {
154
+ transform: translate(0.8px, 3.4px);
155
+ }
156
+ 20%, 100% {
157
+ transform: translate(0, 0);
158
+ }
159
+ }
160
+
161
+ @keyframes leg-shift {
162
+ 0% {
163
+ transform: translate(0, -2px);
164
+ }
165
+ 8% {
166
+ transform: translate(0, -1.5px);
167
+ }
168
+ 20%, 100% {
169
+ transform: translate(0, 0);
170
+ }
171
+ }
172
+
173
+ @keyframes leg-grow {
174
+ 0% {
175
+ transform: scale(1, 0.25);
176
+ }
177
+ 8% {
178
+ transform: scale(1, 0.45);
179
+ }
180
+ 20%, 100% {
181
+ transform: scale(1, 1);
182
+ }
183
+ }
184
+
185
+ @keyframes eye-shift {
186
+ 0% {
187
+ transform: translate(-0.5px, 4.5px);
188
+ }
189
+ 6.667% {
190
+ transform: translate(-0.5px, 4.15px);
191
+ }
192
+ 10% {
193
+ transform: translate(-0.2px, 1px);
194
+ }
195
+ 14% {
196
+ transform: translate(-0.06px, 0.2px);
197
+ }
198
+ 20%, 54% {
199
+ transform: translate(0, 0);
200
+ }
201
+ 58% {
202
+ transform: translate(0, 0.5px);
203
+ }
204
+ 62%, 100% {
205
+ transform: translate(0, 0);
206
+ }
207
+ }
208
+
209
+ @keyframes eye-shape {
210
+ 0% {
211
+ transform: scale(2, 0.2);
212
+ }
213
+ 6.667% {
214
+ transform: scale(2.12, 0.12);
215
+ }
216
+ 10% {
217
+ transform: scale(1.45, 1.8);
218
+ }
219
+ 14% {
220
+ transform: scale(0.92, 1.08);
221
+ }
222
+ 20%, 54% {
223
+ transform: scale(1, 1);
224
+ }
225
+ 58% {
226
+ transform: scale(1, 0.08);
227
+ }
228
+ 62% {
229
+ transform: scale(1, 1.08);
230
+ }
231
+ 66.667%, 100% {
232
+ transform: scale(1, 1);
233
+ }
234
+ }
235
+ </style>
236
+ </defs>
237
+
238
+ <rect class="once shadow" x="-1" y="15" width="17" height="1" fill="#000000" opacity="0.4"/>
239
+
240
+ <g class="once body-motion">
241
+ <g fill="#DE886D">
242
+ <g class="once leg-shift">
243
+ <rect class="once scale-top-left leg-grow" x="3" y="11" width="1" height="4"/>
244
+ </g>
245
+ <g class="once leg-shift">
246
+ <rect class="once scale-top-left leg-grow" x="5" y="11" width="1" height="4"/>
247
+ </g>
248
+ <g class="once leg-shift">
249
+ <rect class="once scale-top-left leg-grow" x="9" y="11" width="1" height="4"/>
250
+ </g>
251
+ <g class="once leg-shift">
252
+ <rect class="once scale-top-left leg-grow" x="11" y="11" width="1" height="4"/>
253
+ </g>
254
+ </g>
255
+
256
+ <g class="once torso-shift">
257
+ <rect class="once scale-top-left torso-shape" x="2" y="6" width="11" height="7" fill="#DE886D"/>
258
+ </g>
259
+
260
+ <g class="once arm-left">
261
+ <rect x="0" y="9" width="2" height="2" fill="#DE886D"/>
262
+ </g>
263
+
264
+ <g class="once arm-right">
265
+ <rect x="13" y="9" width="2" height="2" fill="#DE886D"/>
266
+ </g>
267
+
268
+ <g fill="#000000">
269
+ <g class="once eye-shift">
270
+ <rect class="once scale-top-left eye-shape" x="4" y="8" width="1" height="2"/>
271
+ </g>
272
+ <g class="once eye-shift">
273
+ <rect class="once scale-top-left eye-shape" x="10" y="8" width="1" height="2"/>
274
+ </g>
275
+ </g>
276
+ </g>
277
+ </svg>