@ash-qw/dsh-theme-prts 0.1.91

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 (50) hide show
  1. package/LICENSE +24 -0
  2. package/README.en.md +103 -0
  3. package/README.md +107 -0
  4. package/THIRD_PARTY_NOTICES.md +48 -0
  5. package/cordis.patch.yml +4 -0
  6. package/lib/client.js +7466 -0
  7. package/lib/index.js +3 -0
  8. package/package.json +64 -0
  9. package/src/assets/faction-emblems/lungmen.png +0 -0
  10. package/src/assets/faction-emblems/penguin-logistics.png +0 -0
  11. package/src/assets/faction-emblems/reunion.png +0 -0
  12. package/src/assets/faction-emblems/rhine-lab.png +0 -0
  13. package/src/assets/faction-emblems/rhodes-island.png +0 -0
  14. package/src/assets/prts-original-avatar.png +0 -0
  15. package/src/assets/rhodes-dsh.svg +6 -0
  16. package/src/assets/topographic-map.svg +72 -0
  17. package/src/assets/topographic-tech.svg +19 -0
  18. package/src/client/assistant-glass-adapter.js +231 -0
  19. package/src/client/composer-glass-adapter.js +210 -0
  20. package/src/client/conversation-control-adapter.js +109 -0
  21. package/src/client/conversation-scale-adapter.js +2243 -0
  22. package/src/client/facility-geometry.js +60 -0
  23. package/src/client/facility-vector.js +230 -0
  24. package/src/client/floating-glass-adapter.js +177 -0
  25. package/src/client/host-geometry-adapter.js +123 -0
  26. package/src/client/index.js +359 -0
  27. package/src/client/layout-stability-diagnostics.js +162 -0
  28. package/src/client/operations-shell-v2.js +248 -0
  29. package/src/client/particle-field-adapter.js +1840 -0
  30. package/src/client/preferences.js +239 -0
  31. package/src/client/rc7-adapter.js +83 -0
  32. package/src/client/resize-shield-adapter.js +64 -0
  33. package/src/client/settings-page.js +62 -0
  34. package/src/client/sidebar-control-adapter.js +317 -0
  35. package/src/client/startup-sequence.js +366 -0
  36. package/src/client/status-projection.js +79 -0
  37. package/src/client/terrain-motion-adapter.js +188 -0
  38. package/src/client/theme-controller-v2.js +134 -0
  39. package/src/client/theme-controller.js +119 -0
  40. package/src/client/theme-settings-workbench.js +583 -0
  41. package/src/client/to-bottom-adapter.js +85 -0
  42. package/src/client/ui-store.js +23 -0
  43. package/src/index.js +4 -0
  44. package/src/styles/conversation-scale.css +471 -0
  45. package/src/styles/facility-vector.css +292 -0
  46. package/src/styles/prts.css +1223 -0
  47. package/src/styles/refinement.css +429 -0
  48. package/src/styles/stabilization.css +161 -0
  49. package/src/styles/startup-sequence.css +496 -0
  50. package/src/styles/theme-settings-workbench.css +803 -0
@@ -0,0 +1,23 @@
1
+ import { DEFAULT_PREFERENCES } from './preferences.js'
2
+ import { EMPTY_STATUS } from './status-projection.js'
3
+
4
+ export function createPrtsUiStore(defineStore, initial = {}) {
5
+ const initialPreferences = initial.preferences ?? DEFAULT_PREFERENCES
6
+ const initialStatus = initial.status ?? EMPTY_STATUS
7
+ const initialRevision = initial.revision ?? -1
8
+ return defineStore({
9
+ init: () => ({
10
+ preferences: { ...initialPreferences },
11
+ status: { ...initialStatus },
12
+ revision: initialRevision,
13
+ }),
14
+ actions: {
15
+ sync(draft, preferences, status, revision) {
16
+ if (revision <= draft.revision) return
17
+ draft.preferences = { ...preferences }
18
+ draft.status = { ...status }
19
+ draft.revision = revision
20
+ },
21
+ },
22
+ })
23
+ }
package/src/index.js ADDED
@@ -0,0 +1,4 @@
1
+ export const PACKAGE_ID = '@ash-qw/dsh-theme-prts'
2
+ export const THEME_PLUGIN_ID = 'dsh-theme-prts'
3
+
4
+ export function apply() {}
@@ -0,0 +1,471 @@
1
+ /* Codex-like conversation scale. It never changes native message or composer geometry. */
2
+ html[data-dsh-prts] [data-message-role]::before,
3
+ html[data-dsh-prts] [data-chat-flow-kind]::before {
4
+ content: none !important;
5
+ display: none !important;
6
+ }
7
+
8
+ html[data-dsh-prts] [data-conversation-scroll]:not([data-prts-hero-active])[data-prts-conversation-scale-ready]::before,
9
+ html[data-dsh-prts] [data-conversation-scroll]:not([data-prts-hero-active])[data-prts-conversation-scale-empty]::before {
10
+ content: none !important;
11
+ display: none !important;
12
+ }
13
+
14
+ html[data-dsh-prts] [data-prts-conversation-scale] {
15
+ position: absolute;
16
+ z-index: 8;
17
+ width: 32px;
18
+ min-height: 84px;
19
+ margin: 0;
20
+ padding: 0;
21
+ overflow: hidden;
22
+ opacity: .54;
23
+ visibility: visible;
24
+ transition: opacity 100ms ease, filter 150ms ease, visibility 0s linear;
25
+ pointer-events: auto;
26
+ touch-action: none;
27
+ cursor: pointer;
28
+ isolation: isolate;
29
+ }
30
+
31
+ html[data-dsh-prts] [data-prts-conversation-scale][data-prts-resizing] {
32
+ opacity: .38;
33
+ filter: none;
34
+ transition: none;
35
+ }
36
+
37
+ html[data-dsh-prts] [data-prts-conversation-scale][data-prts-resizing] :is(
38
+ [data-prts-conversation-scale-accent],
39
+ [data-prts-conversation-scale-history]
40
+ ) {
41
+ filter: none;
42
+ transition: none;
43
+ }
44
+
45
+ html[data-dsh-prts] [data-prts-conversation-scale]:is(
46
+ [data-prts-conversation-scale-obstructed],
47
+ [data-prts-conversation-scale-space-obstructed]
48
+ ) {
49
+ opacity: 0;
50
+ visibility: hidden;
51
+ transition-delay: 0s, 0s, 100ms;
52
+ pointer-events: none;
53
+ }
54
+
55
+ html[data-dsh-prts] [data-prts-conversation-scale][data-prts-conversation-scale-blocked] {
56
+ opacity: 0;
57
+ visibility: hidden;
58
+ transition: none;
59
+ pointer-events: none;
60
+ }
61
+
62
+ html[data-dsh-prts] [data-prts-conversation-scale]:focus {
63
+ outline: none;
64
+ }
65
+
66
+ html[data-dsh-prts] [data-prts-conversation-scale]:focus-visible {
67
+ filter: drop-shadow(0 0 7px color-mix(in srgb, var(--prts-cyan) 34%, transparent));
68
+ }
69
+
70
+ html[data-dsh-prts] [data-prts-conversation-scale-svg] {
71
+ position: absolute;
72
+ inset: 0;
73
+ display: block;
74
+ width: 100%;
75
+ height: 100%;
76
+ overflow: hidden;
77
+ shape-rendering: geometricPrecision;
78
+ }
79
+
80
+ html[data-dsh-prts] [data-prts-conversation-scale-marks] {
81
+ pointer-events: none;
82
+ }
83
+
84
+ html[data-dsh-prts] :is(
85
+ [data-prts-conversation-scale-gray],
86
+ [data-prts-conversation-scale-accent],
87
+ [data-prts-conversation-scale-history]
88
+ ) {
89
+ fill: none;
90
+ stroke-width: 1;
91
+ stroke-linecap: square;
92
+ vector-effect: non-scaling-stroke;
93
+ pointer-events: none;
94
+ }
95
+
96
+ html[data-dsh-prts] [data-prts-conversation-scale-gray] {
97
+ stroke: color-mix(in srgb, var(--prts-muted) 76%, var(--prts-line-strong));
98
+ }
99
+
100
+ html[data-dsh-prts] [data-prts-conversation-scale-accent] {
101
+ stroke: var(--prts-yellow);
102
+ filter: drop-shadow(0 0 4px color-mix(in srgb, var(--prts-yellow) 42%, transparent));
103
+ }
104
+
105
+ html[data-dsh-prts] [data-prts-conversation-scale-history] {
106
+ stroke: var(--prts-cyan);
107
+ stroke-width: 1.5;
108
+ filter: drop-shadow(0 0 4px color-mix(in srgb, var(--prts-cyan) 38%, transparent));
109
+ }
110
+
111
+ html[data-dsh-prts] [data-prts-conversation-scale-history] {
112
+ transition: stroke-width 100ms ease, filter 120ms ease;
113
+ }
114
+
115
+ html[data-dsh-prts] [data-prts-conversation-scale][data-prts-conversation-history-selected]
116
+ [data-prts-conversation-scale-history] {
117
+ stroke-width: 2.5;
118
+ filter:
119
+ drop-shadow(0 0 3px color-mix(in srgb, var(--prts-cyan) 78%, transparent))
120
+ drop-shadow(0 0 8px color-mix(in srgb, var(--prts-cyan) 48%, transparent));
121
+ }
122
+
123
+ html[data-dsh-prts] [data-prts-conversation-history-hint],
124
+ html[data-dsh-prts] [data-prts-conversation-history-hint] * {
125
+ box-sizing: border-box;
126
+ }
127
+
128
+ html[data-dsh-prts] [data-prts-conversation-history-hint] {
129
+ position: absolute;
130
+ z-index: 13;
131
+ height: 8px;
132
+ transform: translateY(-50%);
133
+ pointer-events: auto;
134
+ }
135
+
136
+ html[data-dsh-prts] [data-prts-conversation-history-hint][hidden],
137
+ html[data-dsh-prts] [data-prts-conversation-history-tooltip][hidden] {
138
+ display: none;
139
+ }
140
+
141
+ html[data-dsh-prts] [data-prts-conversation-history-trigger] {
142
+ width: 30px;
143
+ min-width: 30px;
144
+ height: 8px;
145
+ min-height: 8px;
146
+ max-height: 8px;
147
+ padding: 0;
148
+ display: block;
149
+ border: 0;
150
+ border-radius: 0;
151
+ opacity: 0;
152
+ background: transparent;
153
+ cursor: pointer;
154
+ }
155
+
156
+ html[data-dsh-prts] [data-prts-conversation-history-tooltip] {
157
+ position: absolute;
158
+ top: var(--prts-history-tooltip-top, 50%);
159
+ left: calc(100% + 10px);
160
+ width: 360px;
161
+ height: 128px;
162
+ margin: 0;
163
+ padding: 1px;
164
+ overflow: visible;
165
+ border: 0;
166
+ background: var(--prts-line-strong);
167
+ color: var(--prts-ink);
168
+ clip-path: polygon(
169
+ 3px 0, calc(100% - 3px) 0, 100% 3px,
170
+ 100% calc(100% - 3px), calc(100% - 3px) 100%,
171
+ 3px 100%, 0 calc(100% - 3px), 0 3px
172
+ );
173
+ opacity: .98;
174
+ transform: translate3d(0, 0, 0);
175
+ pointer-events: none;
176
+ isolation: isolate;
177
+ animation: prts-conversation-history-tooltip-in 120ms var(--prts-ease-snap);
178
+ }
179
+
180
+ html[data-dsh-prts] [data-prts-conversation-history-tooltip]::before {
181
+ content: "";
182
+ position: absolute;
183
+ z-index: 0;
184
+ inset: 1px;
185
+ background: var(--prts-active-glass);
186
+ clip-path: polygon(
187
+ 2px 0, calc(100% - 2px) 0, 100% 2px,
188
+ 100% calc(100% - 2px), calc(100% - 2px) 100%,
189
+ 2px 100%, 0 calc(100% - 2px), 0 2px
190
+ );
191
+ backdrop-filter: var(--prts-active-glass-filter);
192
+ -webkit-backdrop-filter: var(--prts-active-glass-filter);
193
+ }
194
+
195
+ html[data-dsh-prts] [data-prts-conversation-history-tooltip]
196
+ [data-prts-conversation-preview-row="question"] b {
197
+ color: var(--prts-cyan);
198
+ }
199
+
200
+ html[data-dsh-prts] [data-prts-conversation-history-tooltip-label] {
201
+ overflow: hidden;
202
+ color: var(--prts-ink);
203
+ text-overflow: ellipsis;
204
+ white-space: nowrap;
205
+ }
206
+
207
+ html[data-dsh-prts] [data-prts-conversation-history-tooltip-content] {
208
+ min-width: 0;
209
+ display: grid;
210
+ gap: 3px;
211
+ }
212
+
213
+ html[data-dsh-prts] [data-prts-conversation-history-tooltip-content] strong {
214
+ color: var(--prts-ink);
215
+ font-size: 15px;
216
+ font-weight: 750;
217
+ }
218
+
219
+ html[data-dsh-prts] [data-prts-conversation-history-tooltip-content] span {
220
+ overflow: hidden;
221
+ color: var(--prts-muted);
222
+ font-size: 12px;
223
+ text-overflow: ellipsis;
224
+ white-space: nowrap;
225
+ }
226
+
227
+ html[data-dsh-prts] [data-prts-conversation-history-tooltip-connector] {
228
+ position: absolute;
229
+ z-index: 2;
230
+ top: var(--prts-history-tooltip-anchor-y, 50%);
231
+ right: 100%;
232
+ width: 14px;
233
+ height: 1px;
234
+ background: linear-gradient(90deg, var(--prts-cyan), var(--prts-line-strong));
235
+ transform: translateY(-.5px);
236
+ pointer-events: none;
237
+ }
238
+
239
+ html[data-dsh-prts] [data-prts-conversation-history-tooltip-connector]::before {
240
+ content: "";
241
+ position: absolute;
242
+ top: -1px;
243
+ left: 0;
244
+ width: 3px;
245
+ height: 3px;
246
+ background: var(--prts-cyan);
247
+ }
248
+
249
+ @keyframes prts-conversation-history-tooltip-in {
250
+ from { opacity: 0; transform: translate3d(-4px, 0, 0); }
251
+ to { opacity: .98; transform: translate3d(0, 0, 0); }
252
+ }
253
+
254
+ html[data-dsh-prts] [data-prts-conversation-scale-hit] {
255
+ pointer-events: all;
256
+ }
257
+
258
+ html[data-dsh-prts] [data-prts-conversation-history-status],
259
+ html[data-dsh-prts] [data-prts-conversation-history-status] * {
260
+ box-sizing: border-box;
261
+ }
262
+
263
+ html[data-dsh-prts] [data-prts-conversation-history-status] {
264
+ position: absolute;
265
+ z-index: 13;
266
+ min-height: 34px;
267
+ max-width: min(320px, calc(100% - 72px));
268
+ display: flex;
269
+ align-items: center;
270
+ gap: 10px;
271
+ padding: 5px 6px 5px 10px;
272
+ border: 1px solid var(--prts-line-strong);
273
+ background: var(--prts-active-glass);
274
+ color: var(--prts-ink);
275
+ box-shadow: 0 8px 22px color-mix(in srgb, var(--prts-canvas) 22%, transparent);
276
+ clip-path: polygon(3px 0, 100% 0, 100% calc(100% - 3px), calc(100% - 3px) 100%, 0 100%, 0 3px);
277
+ font: 700 12px/1.35 var(--prts-mono);
278
+ backdrop-filter: var(--prts-active-glass-filter);
279
+ -webkit-backdrop-filter: var(--prts-active-glass-filter);
280
+ }
281
+
282
+ html[data-dsh-prts] [data-prts-conversation-history-status][hidden] {
283
+ display: none;
284
+ }
285
+
286
+ html[data-dsh-prts] [data-prts-conversation-history-text] {
287
+ min-width: 0;
288
+ }
289
+
290
+ html[data-dsh-prts] [data-prts-conversation-history-action] {
291
+ min-width: 44px;
292
+ min-height: 24px;
293
+ padding: 3px 8px;
294
+ border: 1px solid var(--prts-cyan);
295
+ border-radius: 0;
296
+ background: transparent;
297
+ color: var(--prts-cyan);
298
+ font: inherit;
299
+ cursor: pointer;
300
+ }
301
+
302
+ html[data-dsh-prts] [data-prts-conversation-history-status][data-prts-history-phase="error"] {
303
+ border-color: var(--prts-yellow);
304
+ }
305
+
306
+ html[data-dsh-prts] [data-prts-conversation-history-status][data-prts-history-phase="loading"] {
307
+ color: var(--prts-cyan);
308
+ }
309
+
310
+ html[data-dsh-prts] [data-prts-conversation-preview] {
311
+ --prts-preview-anchor-y: 46px;
312
+ position: absolute;
313
+ z-index: 12;
314
+ width: 360px;
315
+ max-width: calc(100% - 64px);
316
+ height: 128px;
317
+ margin: 0;
318
+ padding: 1px;
319
+ overflow: visible;
320
+ border: 0;
321
+ background: var(--prts-line-strong);
322
+ color: var(--prts-ink);
323
+ clip-path: polygon(
324
+ 3px 0, calc(100% - 3px) 0, 100% 3px,
325
+ 100% calc(100% - 3px), calc(100% - 3px) 100%,
326
+ 3px 100%, 0 calc(100% - 3px), 0 3px
327
+ );
328
+ opacity: 0;
329
+ visibility: hidden;
330
+ transform: translate3d(-4px, 0, 0);
331
+ transition: opacity 100ms ease, transform 120ms var(--prts-ease-snap), visibility 0s linear 120ms;
332
+ pointer-events: none;
333
+ isolation: isolate;
334
+ }
335
+
336
+ html[data-dsh-prts] [data-prts-conversation-preview]::before {
337
+ content: "";
338
+ position: absolute;
339
+ z-index: 0;
340
+ inset: 1px;
341
+ background: var(--prts-active-glass);
342
+ clip-path: polygon(
343
+ 2px 0, calc(100% - 2px) 0, 100% 2px,
344
+ 100% calc(100% - 2px), calc(100% - 2px) 100%,
345
+ 2px 100%, 0 calc(100% - 2px), 0 2px
346
+ );
347
+ backdrop-filter: var(--prts-active-glass-filter);
348
+ -webkit-backdrop-filter: var(--prts-active-glass-filter);
349
+ }
350
+
351
+ html[data-dsh-prts] [data-prts-conversation-preview][data-prts-conversation-preview-visible] {
352
+ opacity: .98;
353
+ visibility: visible;
354
+ transform: translate3d(0, 0, 0);
355
+ transition-delay: 0s;
356
+ }
357
+
358
+ html[data-dsh-prts] [data-prts-conversation-preview-connector] {
359
+ position: absolute;
360
+ z-index: 2;
361
+ top: var(--prts-preview-anchor-y);
362
+ right: 100%;
363
+ width: 14px;
364
+ height: 1px;
365
+ background: linear-gradient(90deg, var(--prts-yellow), var(--prts-line-strong));
366
+ transform: translateY(-.5px);
367
+ pointer-events: none;
368
+ }
369
+
370
+ html[data-dsh-prts] [data-prts-conversation-preview-connector]::before {
371
+ content: "";
372
+ position: absolute;
373
+ top: -1px;
374
+ left: 0;
375
+ width: 3px;
376
+ height: 3px;
377
+ background: var(--prts-yellow);
378
+ }
379
+
380
+ html[data-dsh-prts] [data-prts-conversation-preview-body] {
381
+ position: relative;
382
+ z-index: 1;
383
+ height: 100%;
384
+ display: grid;
385
+ grid-template-rows: 32px minmax(0, 1fr);
386
+ padding: 10px 14px 12px;
387
+ font-family: var(--prts-mono);
388
+ }
389
+
390
+ html[data-dsh-prts] [data-prts-conversation-preview-row] {
391
+ min-width: 0;
392
+ display: grid;
393
+ grid-template-columns: 24px minmax(0, 1fr);
394
+ column-gap: 8px;
395
+ align-items: start;
396
+ font-size: 15px;
397
+ line-height: 1.45;
398
+ }
399
+
400
+ html[data-dsh-prts] [data-prts-conversation-preview-row] b {
401
+ font-size: 14px;
402
+ font-weight: 750;
403
+ line-height: 1.55;
404
+ letter-spacing: .08em;
405
+ }
406
+
407
+ html[data-dsh-prts] [data-prts-conversation-preview-row="question"] {
408
+ border-bottom: 1px solid color-mix(in srgb, var(--prts-line) 72%, transparent);
409
+ color: var(--prts-ink);
410
+ }
411
+
412
+ html[data-dsh-prts] [data-prts-conversation-preview-row="question"] b {
413
+ color: var(--prts-yellow);
414
+ }
415
+
416
+ html[data-dsh-prts] [data-prts-conversation-preview-row="answer"] {
417
+ padding-top: 6px;
418
+ color: var(--prts-muted);
419
+ }
420
+
421
+ html[data-dsh-prts] [data-prts-conversation-preview-row="answer"] b {
422
+ color: var(--prts-cyan);
423
+ }
424
+
425
+ html[data-dsh-prts] [data-prts-conversation-preview-question] {
426
+ display: block;
427
+ overflow: hidden;
428
+ text-overflow: ellipsis;
429
+ white-space: nowrap;
430
+ }
431
+
432
+ html[data-dsh-prts] [data-prts-conversation-preview-answer] {
433
+ display: -webkit-box;
434
+ overflow: hidden;
435
+ -webkit-box-orient: vertical;
436
+ -webkit-line-clamp: 3;
437
+ }
438
+
439
+ html[data-dsh-prts] [data-prts-conversation-preview][data-prts-preview-state="streaming"] [data-prts-conversation-preview-answer] {
440
+ color: var(--prts-yellow);
441
+ }
442
+
443
+ html[data-dsh-prts] [data-prts-conversation-scale][data-prts-conversation-scale-empty] {
444
+ display: none;
445
+ }
446
+
447
+ @media (max-width: 640px) {
448
+ html[data-dsh-prts] :is(
449
+ [data-prts-conversation-scale],
450
+ [data-prts-conversation-preview],
451
+ [data-prts-conversation-history-hint],
452
+ [data-prts-conversation-history-status]
453
+ ) {
454
+ display: none !important;
455
+ }
456
+ }
457
+
458
+ @media (prefers-reduced-motion: reduce) {
459
+ html[data-dsh-prts] [data-prts-conversation-scale],
460
+ html[data-dsh-prts] [data-prts-conversation-preview],
461
+ html[data-dsh-prts] [data-prts-conversation-history-hint],
462
+ html[data-dsh-prts] [data-prts-conversation-history-tooltip],
463
+ html[data-dsh-prts] :is(
464
+ [data-prts-conversation-scale-gray],
465
+ [data-prts-conversation-scale-accent],
466
+ [data-prts-conversation-scale-history]
467
+ ) {
468
+ animation: none !important;
469
+ transition: none !important;
470
+ }
471
+ }