appclean 2.0.0 → 2.0.3

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 (57) hide show
  1. package/.github/workflows/npm-publish.yml +104 -0
  2. package/DEVELOPMENT.md +84 -0
  3. package/RELEASE_GUIDE.md +257 -0
  4. package/RELEASE_QUICK_START.md +176 -0
  5. package/assets/logo.svg +48 -32
  6. package/dist/index.js +1 -1
  7. package/dist/ui/client/api/client.d.ts.map +1 -1
  8. package/dist/ui/client/api/client.js +5 -1
  9. package/dist/ui/client/api/client.js.map +1 -1
  10. package/dist/ui/client/app.d.ts +1 -1
  11. package/dist/ui/client/app.d.ts.map +1 -1
  12. package/dist/ui/client/app.js +10 -6
  13. package/dist/ui/client/app.js.map +1 -1
  14. package/dist/ui/client/index.html +103 -46
  15. package/dist/ui/client/pages/appSearch.js +12 -1
  16. package/dist/ui/client/pages/appSearch.js.map +1 -1
  17. package/dist/ui/client/pages/dashboard.d.ts.map +1 -1
  18. package/dist/ui/client/pages/dashboard.js +26 -5
  19. package/dist/ui/client/pages/dashboard.js.map +1 -1
  20. package/dist/ui/client/state/appStore.d.ts.map +1 -1
  21. package/dist/ui/client/state/appStore.js +21 -12
  22. package/dist/ui/client/state/appStore.js.map +1 -1
  23. package/dist/ui/client/state/dashboardStore.d.ts.map +1 -1
  24. package/dist/ui/client/state/dashboardStore.js +9 -3
  25. package/dist/ui/client/state/dashboardStore.js.map +1 -1
  26. package/dist/ui/client/styles/animations.css +384 -2
  27. package/dist/ui/client/styles/base.css +347 -73
  28. package/dist/ui/client/styles/components.css +566 -189
  29. package/dist/ui/client/styles/layout.css +618 -1
  30. package/dist/ui/client/styles/responsive.css +388 -0
  31. package/dist/ui/client/styles/variables.css +163 -69
  32. package/dist/ui/guiServer.d.ts +3 -0
  33. package/dist/ui/guiServer.d.ts.map +1 -1
  34. package/dist/ui/guiServer.js +48 -1
  35. package/dist/ui/guiServer.js.map +1 -1
  36. package/dist/utils/upgrade.d.ts +2 -1
  37. package/dist/utils/upgrade.d.ts.map +1 -1
  38. package/dist/utils/upgrade.js +14 -1
  39. package/dist/utils/upgrade.js.map +1 -1
  40. package/package.json +1 -1
  41. package/scripts/publish-npm.sh +64 -0
  42. package/src/index.ts +1 -1
  43. package/src/ui/client/api/client.ts +6 -1
  44. package/src/ui/client/app.ts +15 -11
  45. package/src/ui/client/index.html +103 -46
  46. package/src/ui/client/pages/appSearch.ts +14 -1
  47. package/src/ui/client/pages/dashboard.ts +27 -5
  48. package/src/ui/client/state/appStore.ts +24 -12
  49. package/src/ui/client/state/dashboardStore.ts +13 -3
  50. package/src/ui/client/styles/animations.css +384 -2
  51. package/src/ui/client/styles/base.css +347 -73
  52. package/src/ui/client/styles/components.css +566 -189
  53. package/src/ui/client/styles/layout.css +618 -1
  54. package/src/ui/client/styles/responsive.css +388 -0
  55. package/src/ui/client/styles/variables.css +163 -69
  56. package/src/ui/guiServer.ts +67 -1
  57. package/src/utils/upgrade.ts +18 -1
@@ -1,20 +1,28 @@
1
- /* Base Styles - Typography, Reset, Global Styles */
1
+ /* ============================================================================
2
+ Base Styles - Typography, Reset, Global Styles
3
+ ============================================================================ */
2
4
 
3
- * {
5
+ /* Reset & Box Model */
6
+ *,
7
+ *::before,
8
+ *::after {
4
9
  margin: 0;
5
10
  padding: 0;
6
11
  box-sizing: border-box;
7
12
  }
8
13
 
14
+ /* HTML & Body */
9
15
  html {
10
16
  font-size: 16px;
11
17
  -webkit-font-smoothing: antialiased;
12
18
  -moz-osx-font-smoothing: grayscale;
19
+ scroll-behavior: smooth;
13
20
  }
14
21
 
15
22
  body {
16
23
  font-family: var(--font-family);
17
24
  font-size: var(--font-base);
25
+ font-weight: var(--fw-regular);
18
26
  line-height: var(--lh-normal);
19
27
  color: var(--text-primary);
20
28
  background-color: var(--bg-primary);
@@ -22,51 +30,52 @@ body {
22
30
  overflow-x: hidden;
23
31
  }
24
32
 
25
- /* Typography */
26
- h1 {
27
- font-size: var(--font-3xl);
33
+ /* ============================================================================
34
+ Typography Hierarchy
35
+ ============================================================================ */
36
+
37
+ h1, h2, h3, h4, h5, h6 {
28
38
  font-weight: var(--fw-bold);
29
39
  line-height: var(--lh-tight);
40
+ letter-spacing: -0.02em;
30
41
  margin-bottom: var(--space-4);
31
- letter-spacing: -0.5px;
42
+ }
43
+
44
+ h1 {
45
+ font-size: var(--font-4xl);
46
+ letter-spacing: -0.03em;
32
47
  }
33
48
 
34
49
  h2 {
35
- font-size: var(--font-2xl);
36
- font-weight: var(--fw-bold);
37
- line-height: var(--lh-tight);
38
- margin-bottom: var(--space-3);
39
- letter-spacing: -0.3px;
50
+ font-size: var(--font-3xl);
51
+ letter-spacing: -0.02em;
40
52
  }
41
53
 
42
54
  h3 {
43
- font-size: var(--font-xl);
55
+ font-size: var(--font-2xl);
44
56
  font-weight: var(--fw-semibold);
45
- line-height: var(--lh-normal);
46
- margin-bottom: var(--space-2);
57
+ margin-bottom: var(--space-3);
47
58
  }
48
59
 
49
60
  h4 {
50
- font-size: var(--font-lg);
61
+ font-size: var(--font-xl);
51
62
  font-weight: var(--fw-semibold);
52
- line-height: var(--lh-normal);
53
63
  margin-bottom: var(--space-2);
54
64
  }
55
65
 
56
66
  h5 {
57
- font-size: var(--font-base);
67
+ font-size: var(--font-lg);
58
68
  font-weight: var(--fw-semibold);
59
- line-height: var(--lh-normal);
60
- margin-bottom: var(--space-1);
69
+ margin-bottom: var(--space-2);
61
70
  }
62
71
 
63
72
  h6 {
64
- font-size: var(--font-sm);
73
+ font-size: var(--font-base);
65
74
  font-weight: var(--fw-semibold);
66
- line-height: var(--lh-normal);
67
- margin-bottom: var(--space-1);
75
+ margin-bottom: var(--space-2);
68
76
  }
69
77
 
78
+ /* Paragraph & Text */
70
79
  p {
71
80
  margin-bottom: var(--space-4);
72
81
  color: var(--text-secondary);
@@ -77,17 +86,37 @@ p:last-child {
77
86
  margin-bottom: 0;
78
87
  }
79
88
 
89
+ small {
90
+ font-size: var(--font-sm);
91
+ color: var(--text-muted);
92
+ }
93
+
94
+ strong {
95
+ font-weight: var(--fw-bold);
96
+ }
97
+
98
+ em {
99
+ font-style: italic;
100
+ }
101
+
102
+ /* Links */
80
103
  a {
81
104
  color: var(--color-primary);
82
105
  text-decoration: none;
83
- transition: color var(--transition-fast);
106
+ transition: color var(--transition-fast), opacity var(--transition-fast);
107
+ cursor: pointer;
84
108
  }
85
109
 
86
110
  a:hover {
87
- color: var(--color-primary-hover);
111
+ color: var(--color-primary-600);
88
112
  text-decoration: underline;
89
113
  }
90
114
 
115
+ a:active {
116
+ opacity: 0.8;
117
+ }
118
+
119
+ /* Code & Pre-formatted Text */
91
120
  code {
92
121
  font-family: var(--font-family-mono);
93
122
  font-size: 0.9em;
@@ -98,14 +127,14 @@ code {
98
127
  }
99
128
 
100
129
  pre {
130
+ font-family: var(--font-family-mono);
131
+ font-size: var(--font-sm);
132
+ line-height: var(--lh-normal);
101
133
  background-color: var(--bg-secondary);
102
134
  border: 1px solid var(--border-color);
103
135
  border-radius: var(--radius-lg);
104
136
  padding: var(--space-4);
105
137
  overflow-x: auto;
106
- font-family: var(--font-family-mono);
107
- font-size: var(--font-sm);
108
- line-height: var(--lh-normal);
109
138
  margin-bottom: var(--space-4);
110
139
  }
111
140
 
@@ -116,34 +145,104 @@ pre code {
116
145
  color: var(--text-primary);
117
146
  }
118
147
 
119
- /* Lists */
120
- ul,
121
- ol {
148
+ /* ============================================================================
149
+ Lists
150
+ ============================================================================ */
151
+
152
+ ul, ol {
122
153
  margin-bottom: var(--space-4);
123
154
  margin-left: var(--space-6);
124
155
  }
125
156
 
126
157
  li {
127
158
  margin-bottom: var(--space-2);
159
+ color: var(--text-secondary);
128
160
  }
129
161
 
130
- /* Tables */
162
+ /* ============================================================================
163
+ Forms & Inputs
164
+ ============================================================================ */
165
+
166
+ input[type="text"],
167
+ input[type="email"],
168
+ input[type="password"],
169
+ input[type="number"],
170
+ input[type="search"],
171
+ input[type="url"],
172
+ textarea,
173
+ select {
174
+ font-family: inherit;
175
+ font-size: var(--font-base);
176
+ width: 100%;
177
+ padding: var(--space-3) var(--space-4);
178
+ border: 1px solid var(--border-color);
179
+ border-radius: var(--radius-lg);
180
+ background-color: var(--bg-primary);
181
+ color: var(--text-primary);
182
+ transition: border-color var(--transition-fast), box-shadow var(--transition-fast);
183
+ }
184
+
185
+ input[type="text"]:hover,
186
+ input[type="email"]:hover,
187
+ input[type="password"]:hover,
188
+ input[type="number"]:hover,
189
+ input[type="search"]:hover,
190
+ input[type="url"]:hover,
191
+ textarea:hover,
192
+ select:hover {
193
+ border-color: var(--border-color-hover);
194
+ }
195
+
196
+ input[type="text"]:focus,
197
+ input[type="email"]:focus,
198
+ input[type="password"]:focus,
199
+ input[type="number"]:focus,
200
+ input[type="search"]:focus,
201
+ input[type="url"]:focus,
202
+ textarea:focus,
203
+ select:focus {
204
+ outline: none;
205
+ border-color: var(--color-primary);
206
+ box-shadow: 0 0 0 3px var(--color-primary-100);
207
+ }
208
+
209
+ textarea {
210
+ resize: vertical;
211
+ min-height: 120px;
212
+ }
213
+
214
+ /* ============================================================================
215
+ Buttons
216
+ ============================================================================ */
217
+
218
+ button {
219
+ font-family: inherit;
220
+ cursor: pointer;
221
+ border: none;
222
+ background: none;
223
+ }
224
+
225
+ button:disabled {
226
+ cursor: not-allowed;
227
+ opacity: 0.5;
228
+ }
229
+
230
+ /* ============================================================================
231
+ Tables
232
+ ============================================================================ */
233
+
131
234
  table {
132
235
  width: 100%;
133
236
  border-collapse: collapse;
134
237
  margin-bottom: var(--space-4);
135
238
  }
136
239
 
137
- thead {
138
- background-color: var(--bg-secondary);
139
- border-bottom: 2px solid var(--border-color);
140
- }
141
-
142
240
  th {
143
- padding: var(--space-3) var(--space-4);
144
- text-align: left;
241
+ background-color: var(--bg-secondary);
145
242
  font-weight: var(--fw-semibold);
146
- color: var(--text-primary);
243
+ text-align: left;
244
+ padding: var(--space-3) var(--space-4);
245
+ border-bottom: 2px solid var(--border-color);
147
246
  }
148
247
 
149
248
  td {
@@ -153,51 +252,115 @@ td {
153
252
  }
154
253
 
155
254
  tbody tr:hover {
156
- background-color: var(--bg-secondary);
255
+ background-color: var(--bg-hover);
157
256
  }
158
257
 
159
- /* Forms */
160
- input,
161
- textarea,
162
- select {
163
- font-family: var(--font-family);
164
- font-size: var(--font-base);
165
- width: 100%;
166
- padding: var(--space-2) var(--space-3);
167
- border: 1px solid var(--border-color);
168
- border-radius: var(--radius-md);
169
- background-color: var(--bg-primary);
258
+ /* ============================================================================
259
+ Images & Media
260
+ ============================================================================ */
261
+
262
+ img {
263
+ max-width: 100%;
264
+ height: auto;
265
+ display: block;
266
+ }
267
+
268
+ svg {
269
+ max-width: 100%;
270
+ height: auto;
271
+ }
272
+
273
+ /* ============================================================================
274
+ Utility Classes
275
+ ============================================================================ */
276
+
277
+ /* Text Utilities */
278
+ .text-primary {
170
279
  color: var(--text-primary);
171
- transition: border-color var(--transition-fast), box-shadow var(--transition-fast);
172
280
  }
173
281
 
174
- input:focus,
175
- textarea:focus,
176
- select:focus {
177
- outline: none;
178
- border-color: var(--color-primary);
179
- box-shadow: 0 0 0 3px var(--color-primary-light);
282
+ .text-secondary {
283
+ color: var(--text-secondary);
180
284
  }
181
285
 
182
- input:disabled,
183
- textarea:disabled,
184
- select:disabled {
185
- background-color: var(--bg-secondary);
286
+ .text-muted {
186
287
  color: var(--text-muted);
187
- cursor: not-allowed;
188
- opacity: 0.5;
189
288
  }
190
289
 
191
- label {
192
- display: block;
193
- margin-bottom: var(--space-2);
290
+ .text-danger {
291
+ color: var(--color-danger);
292
+ }
293
+
294
+ .text-success {
295
+ color: var(--color-success);
296
+ }
297
+
298
+ .text-warning {
299
+ color: var(--color-warning);
300
+ }
301
+
302
+ .text-info {
303
+ color: var(--color-info);
304
+ }
305
+
306
+ /* Text Alignment */
307
+ .text-left {
308
+ text-align: left;
309
+ }
310
+
311
+ .text-center {
312
+ text-align: center;
313
+ }
314
+
315
+ .text-right {
316
+ text-align: right;
317
+ }
318
+
319
+ .text-justify {
320
+ text-align: justify;
321
+ }
322
+
323
+ /* Text Styling */
324
+ .font-bold {
325
+ font-weight: var(--fw-bold);
326
+ }
327
+
328
+ .font-semibold {
329
+ font-weight: var(--fw-semibold);
330
+ }
331
+
332
+ .font-medium {
194
333
  font-weight: var(--fw-medium);
195
- color: var(--text-primary);
196
- font-size: var(--font-sm);
197
334
  }
198
335
 
199
- /* Utilities */
200
- .visually-hidden {
336
+ .italic {
337
+ font-style: italic;
338
+ }
339
+
340
+ .underline {
341
+ text-decoration: underline;
342
+ }
343
+
344
+ .no-wrap {
345
+ white-space: nowrap;
346
+ }
347
+
348
+ .truncate {
349
+ overflow: hidden;
350
+ text-overflow: ellipsis;
351
+ white-space: nowrap;
352
+ }
353
+
354
+ /* Display & Visibility */
355
+ .hidden {
356
+ display: none !important;
357
+ }
358
+
359
+ .invisible {
360
+ visibility: hidden;
361
+ }
362
+
363
+ .sr-only {
201
364
  position: absolute;
202
365
  width: 1px;
203
366
  height: 1px;
@@ -209,6 +372,117 @@ label {
209
372
  border-width: 0;
210
373
  }
211
374
 
212
- .no-scroll {
213
- overflow: hidden;
375
+ /* Spacing Utilities */
376
+ .m-0 { margin: 0; }
377
+ .m-1 { margin: var(--space-1); }
378
+ .m-2 { margin: var(--space-2); }
379
+ .m-3 { margin: var(--space-3); }
380
+ .m-4 { margin: var(--space-4); }
381
+ .m-6 { margin: var(--space-6); }
382
+ .m-8 { margin: var(--space-8); }
383
+
384
+ .mt-0 { margin-top: 0; }
385
+ .mt-1 { margin-top: var(--space-1); }
386
+ .mt-2 { margin-top: var(--space-2); }
387
+ .mt-3 { margin-top: var(--space-3); }
388
+ .mt-4 { margin-top: var(--space-4); }
389
+ .mt-6 { margin-top: var(--space-6); }
390
+ .mt-8 { margin-top: var(--space-8); }
391
+
392
+ .mb-0 { margin-bottom: 0; }
393
+ .mb-1 { margin-bottom: var(--space-1); }
394
+ .mb-2 { margin-bottom: var(--space-2); }
395
+ .mb-3 { margin-bottom: var(--space-3); }
396
+ .mb-4 { margin-bottom: var(--space-4); }
397
+ .mb-6 { margin-bottom: var(--space-6); }
398
+ .mb-8 { margin-bottom: var(--space-8); }
399
+
400
+ .p-0 { padding: 0; }
401
+ .p-1 { padding: var(--space-1); }
402
+ .p-2 { padding: var(--space-2); }
403
+ .p-3 { padding: var(--space-3); }
404
+ .p-4 { padding: var(--space-4); }
405
+ .p-6 { padding: var(--space-6); }
406
+ .p-8 { padding: var(--space-8); }
407
+
408
+ /* Gap Utilities */
409
+ .gap-1 { gap: var(--space-1); }
410
+ .gap-2 { gap: var(--space-2); }
411
+ .gap-3 { gap: var(--space-3); }
412
+ .gap-4 { gap: var(--space-4); }
413
+ .gap-6 { gap: var(--space-6); }
414
+
415
+ /* ============================================================================
416
+ Scroll & Selection
417
+ ============================================================================ */
418
+
419
+ ::-webkit-scrollbar {
420
+ width: 8px;
421
+ height: 8px;
422
+ }
423
+
424
+ ::-webkit-scrollbar-track {
425
+ background: var(--bg-secondary);
426
+ }
427
+
428
+ ::-webkit-scrollbar-thumb {
429
+ background: var(--border-color);
430
+ border-radius: var(--radius-full);
431
+ }
432
+
433
+ ::-webkit-scrollbar-thumb:hover {
434
+ background: var(--border-color-hover);
435
+ }
436
+
437
+ ::selection {
438
+ background-color: var(--color-primary-200);
439
+ color: var(--text-primary);
440
+ }
441
+
442
+ /* ============================================================================
443
+ Focus States & Accessibility
444
+ ============================================================================ */
445
+
446
+ :focus-visible {
447
+ outline: 2px solid var(--color-primary);
448
+ outline-offset: 2px;
449
+ }
450
+
451
+ button:focus-visible {
452
+ outline-offset: 0;
453
+ }
454
+
455
+ /* ============================================================================
456
+ Print Styles
457
+ ============================================================================ */
458
+
459
+ @media print {
460
+ body {
461
+ background: white;
462
+ color: black;
463
+ }
464
+
465
+ a {
466
+ color: #0000EE;
467
+ }
468
+
469
+ a[href]:after {
470
+ content: " (" attr(href) ")";
471
+ }
472
+
473
+ img {
474
+ max-width: 100%;
475
+ }
476
+
477
+ @page {
478
+ margin: 2cm;
479
+ }
480
+
481
+ h1, h2, h3 {
482
+ page-break-after: avoid;
483
+ }
484
+
485
+ ul, ol, dl {
486
+ page-break-inside: avoid;
487
+ }
214
488
  }