@ibgib/space-gib 0.0.34 → 0.0.36

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 (54) hide show
  1. package/dist/client/bootstrap.mjs +1 -1
  2. package/dist/client/{chunk-25PXC4HP.mjs → chunk-5DTAUY3E.mjs} +1586 -464
  3. package/dist/client/chunk-J7X3XTAI.mjs +53 -0
  4. package/dist/client/css/activity-bar.css +21 -3
  5. package/dist/client/css/layout.css +126 -5
  6. package/dist/client/css/tutorial.css +327 -0
  7. package/dist/client/index.html +6 -0
  8. package/dist/client/index.mjs +22 -45
  9. package/dist/client/privacy.html +22 -22
  10. package/dist/client/script.mjs +1 -1
  11. package/dist/client/style.css +1 -0
  12. package/dist/server/server.mjs +3 -3
  13. package/package.json +6 -6
  14. package/src/client/AUTO-GENERATED-version.mts +1 -1
  15. package/src/client/cosmos/seed-cosmos-workspace.mts +20 -6
  16. package/src/client/css/activity-bar.css +21 -3
  17. package/src/client/css/layout.css +126 -5
  18. package/src/client/css/tutorial.css +327 -0
  19. package/src/client/dev-tools/vcs-workspace.mts +4 -4
  20. package/src/client/index.html +6 -0
  21. package/src/client/privacy.html +22 -22
  22. package/src/client/style.css +1 -0
  23. package/src/client/ui/component/changes/changes.css +413 -0
  24. package/src/client/ui/component/changes/changes.html +37 -0
  25. package/src/client/ui/component/changes/changes.mts +766 -0
  26. package/src/client/ui/component/changes/index.mts +9 -0
  27. package/src/client/ui/component/chat-view/chat-view.html +6 -58
  28. package/src/client/ui/component/chat-view/chat-view.mts +13 -26
  29. package/src/client/ui/component/clone/clone.mts +67 -39
  30. package/src/client/ui/component/code-editor/code-editor.css +91 -9
  31. package/src/client/ui/component/code-editor/code-editor.html +58 -45
  32. package/src/client/ui/component/code-editor/code-editor.mts +265 -49
  33. package/src/client/ui/component/cosmos-navigator/cosmos-navigator.css +1 -1
  34. package/src/client/ui/component/cosmos-navigator/cosmos-navigator.html +5 -10
  35. package/src/client/ui/component/cosmos-navigator/cosmos-navigator.mts +328 -64
  36. package/src/client/ui/component/file-explorer/file-explorer.css +475 -11
  37. package/src/client/ui/component/file-explorer/file-explorer.html +45 -65
  38. package/src/client/ui/component/file-explorer/file-explorer.mts +1164 -98
  39. package/src/client/ui/component/nested-chat/chat/chat.mts +5 -90
  40. package/src/client/ui/component/nested-chat/nested-chat.mts +10 -8
  41. package/src/client/ui/component/timeline/timeline.css +16 -1
  42. package/src/client/ui/component/timeline/timeline.mts +37 -93
  43. package/src/client/ui/component/tutorial/index.mts +9 -0
  44. package/src/client/ui/component/tutorial/scripts/pitch-tour-script.mts +265 -0
  45. package/src/client/ui/component/tutorial/tutorial-controller.mts +622 -0
  46. package/src/client/ui/component/tutorial/tutorial-types.mts +45 -0
  47. package/src/client/ui/component/tutorial/tutorial.css +260 -0
  48. package/src/client/ui/router/space-gib-router-helpers.mts +33 -233
  49. package/src/client/ui/router/space-gib-router-helpers.respec.mts +298 -122
  50. package/src/client/ui/router/space-gib-router-service.mts +28 -151
  51. package/src/client/ui/router/space-gib-router-types.mts +32 -76
  52. package/src/client/ui/shell/cosmic-big-bang.mts +12 -3
  53. package/src/client/ui/shell/space-gib-shell-service.mts +715 -143
  54. package/dist/client/chunk-RXWLL2AI.mjs +0 -30
@@ -290,18 +290,36 @@
290
290
 
291
291
  /* Left Panel Views (New User POV) */
292
292
  .space-side-view {
293
- display: flex;
293
+ display: none;
294
294
  flex-direction: column;
295
295
  height: 100%;
296
+ flex: 1;
297
+ min-height: 0;
298
+ overflow: hidden;
299
+ box-sizing: border-box;
300
+ }
301
+
302
+ /* Force flex column whenever the side-view is visible, overriding any inline display: block */
303
+ .space-side-view:not([style*="display: none"]):not([style*="display:none"]),
304
+ .space-side-view.active {
305
+ display: flex !important;
306
+ flex-direction: column !important;
307
+ }
308
+
309
+ .space-side-view[style*="display: none"],
310
+ .space-side-view[style*="display:none"] {
311
+ display: none !important;
296
312
  }
297
313
 
298
314
  .side-view-header {
299
315
  display: flex;
300
316
  align-items: center;
301
317
  justify-content: space-between;
302
- padding: 0.65rem 0.5rem 0.85rem;
318
+ padding: 0.35rem 0.5rem 0.4rem;
303
319
  border-bottom: 1px solid var(--clr-border);
304
- margin-bottom: 1rem;
320
+ margin-bottom: 0.35rem;
321
+ flex: 0 0 auto !important;
322
+ flex-shrink: 0 !important;
305
323
  }
306
324
 
307
325
  .side-view-title {
@@ -204,6 +204,10 @@
204
204
  .left-panel {
205
205
  width: var(--left-panel-width);
206
206
  border-right: 1px solid var(--clr-border);
207
+ display: flex;
208
+ flex-direction: column;
209
+ height: 100%;
210
+ overflow: hidden;
207
211
  }
208
212
 
209
213
  .left-panel.collapsed {
@@ -227,6 +231,27 @@
227
231
  min-width: 150px;
228
232
  height: 100%;
229
233
  overflow-y: auto;
234
+ box-sizing: border-box;
235
+ }
236
+
237
+ .left-panel-content {
238
+ padding: 0.35rem 0.5rem 0.5rem !important;
239
+ overflow: hidden !important;
240
+ display: flex;
241
+ flex-direction: column;
242
+ height: 100%;
243
+ box-sizing: border-box;
244
+ }
245
+
246
+ .left-panel-content > .space-side-view:not([style*="display: none"]):not([style*="display:none"]),
247
+ .left-panel-content > .space-side-view.active {
248
+ display: flex !important;
249
+ flex-direction: column !important;
250
+ height: 100% !important;
251
+ flex: 1 1 0px !important;
252
+ min-height: 0 !important;
253
+ overflow: hidden !important;
254
+ box-sizing: border-box !important;
230
255
  }
231
256
 
232
257
  .placeholder-text {
@@ -586,7 +611,7 @@ space-gib-cosmos-navigator {
586
611
  overflow: visible !important;
587
612
  }
588
613
 
589
- /* ── Code Space File Explorer & Timeline Containers (Zero vertical margin) ── */
614
+ /* ── Code Space File Explorer & Timeline Containers ── */
590
615
  .code-file-explorer-container {
591
616
  width: 100%;
592
617
  display: flex;
@@ -594,8 +619,17 @@ space-gib-cosmos-navigator {
594
619
  margin: 0 !important;
595
620
  padding: 0 !important;
596
621
  gap: 0 !important;
597
- overflow-y: auto;
598
- overflow-x: hidden;
622
+ overflow: hidden;
623
+ position: relative;
624
+ z-index: 30;
625
+ flex: 1 1 0px;
626
+ min-height: 76px;
627
+ }
628
+
629
+ .code-file-explorer-container:has(space-gib-file-explorer[collapsed]) {
630
+ flex: 0 0 auto !important;
631
+ height: auto !important;
632
+ min-height: 0 !important;
599
633
  }
600
634
 
601
635
  .code-file-explorer-container space-gib-file-explorer,
@@ -603,6 +637,39 @@ space-gib-file-explorer {
603
637
  display: flex !important;
604
638
  flex-direction: column !important;
605
639
  width: 100% !important;
640
+ height: 100%;
641
+ min-height: 0;
642
+ margin: 0 !important;
643
+ padding: 0 !important;
644
+ }
645
+
646
+ .code-changes-container {
647
+ width: 100%;
648
+ display: flex;
649
+ flex-direction: column;
650
+ margin: 0 !important;
651
+ padding: 0 !important;
652
+ gap: 0 !important;
653
+ overflow: hidden;
654
+ position: relative;
655
+ z-index: 20;
656
+ flex: 1 1 0px;
657
+ min-height: 32px;
658
+ }
659
+
660
+ .code-changes-container:has(space-gib-changes[collapsed]) {
661
+ flex: 0 0 auto !important;
662
+ height: auto !important;
663
+ min-height: 0 !important;
664
+ }
665
+
666
+ .code-changes-container space-gib-changes,
667
+ space-gib-changes {
668
+ display: flex !important;
669
+ flex-direction: column !important;
670
+ width: 100% !important;
671
+ height: 100%;
672
+ min-height: 0;
606
673
  margin: 0 !important;
607
674
  padding: 0 !important;
608
675
  }
@@ -614,8 +681,17 @@ space-gib-file-explorer {
614
681
  margin: 0 !important;
615
682
  padding: 0 !important;
616
683
  gap: 0 !important;
617
- overflow-y: auto;
618
- overflow-x: hidden;
684
+ overflow: hidden;
685
+ position: relative;
686
+ z-index: 10;
687
+ flex: 1 1 0px;
688
+ min-height: 32px;
689
+ }
690
+
691
+ .code-timeline-container:has(space-gib-timeline[collapsed]) {
692
+ flex: 0 0 auto !important;
693
+ height: auto !important;
694
+ min-height: 0 !important;
619
695
  }
620
696
 
621
697
  .code-timeline-container space-gib-timeline,
@@ -623,10 +699,55 @@ space-gib-timeline {
623
699
  display: flex !important;
624
700
  flex-direction: column !important;
625
701
  width: 100% !important;
702
+ height: 100%;
703
+ min-height: 0;
626
704
  margin: 0 !important;
627
705
  padding: 0 !important;
628
706
  }
629
707
 
708
+ /* ── Accordion Horizontal Resizers ── */
709
+ .accordion-resizer {
710
+ height: 6px;
711
+ background: transparent;
712
+ cursor: row-resize;
713
+ position: relative;
714
+ z-index: 25;
715
+ flex: 0 0 6px;
716
+ margin: 1px 0;
717
+ transition: background 0.15s ease;
718
+ }
719
+
720
+ .accordion-resizer::before {
721
+ content: '';
722
+ position: absolute;
723
+ top: -4px;
724
+ bottom: -4px;
725
+ left: 0;
726
+ right: 0;
727
+ z-index: 26;
728
+ }
729
+
730
+ .accordion-resizer:hover,
731
+ .accordion-resizer.active {
732
+ background: var(--clr-accent, #78f87e);
733
+ }
734
+
735
+ .code-file-explorer-container:has(space-gib-file-explorer[collapsed]) + #resizer-explorer-changes {
736
+ display: none !important;
737
+ }
738
+
739
+ #resizer-explorer-changes:has(+ .code-changes-container:has(space-gib-changes[collapsed])) {
740
+ display: none !important;
741
+ }
742
+
743
+ .code-changes-container:has(space-gib-changes[collapsed]) + #resizer-changes-timeline {
744
+ display: none !important;
745
+ }
746
+
747
+ #resizer-changes-timeline:has(+ .code-timeline-container:has(space-gib-timeline[collapsed])) {
748
+ display: none !important;
749
+ }
750
+
630
751
  /* ── Right Panel & Chat View Container ── */
631
752
  .right-panel-content {
632
753
  padding: 0 !important;
@@ -0,0 +1,327 @@
1
+ /**
2
+ * tutorial.css — Styles for the Space-Gib Interactive Tutorial & Spotlight Tour
3
+ */
4
+
5
+ .tutorial-overlay-container {
6
+ position: fixed;
7
+ inset: 0;
8
+ z-index: 10000;
9
+ pointer-events: none;
10
+ overflow: hidden;
11
+ transition: opacity 0.3s ease;
12
+ }
13
+
14
+ /* Semi-transparent dimmer backdrop (active only when no spotlight target) */
15
+ .tutorial-backdrop {
16
+ position: absolute;
17
+ inset: 0;
18
+ background: rgba(8, 10, 15, 0.82);
19
+ backdrop-filter: blur(4px);
20
+ -webkit-backdrop-filter: blur(4px);
21
+ pointer-events: auto;
22
+ opacity: 0;
23
+ transition: opacity 0.3s ease;
24
+ }
25
+
26
+ .tutorial-backdrop.backdrop-active {
27
+ opacity: 1;
28
+ }
29
+
30
+ /* Glowing spotlight ring around the active target with 100% crystal-clear cutout */
31
+ .tutorial-spotlight-ring {
32
+ position: absolute;
33
+ border-radius: 8px;
34
+ background: transparent !important;
35
+ box-shadow: 0 0 0 9999px rgba(8, 10, 15, 0.82),
36
+ 0 0 0 3px rgba(255, 204, 0, 0.85),
37
+ 0 0 25px 6px rgba(255, 180, 0, 0.45);
38
+ pointer-events: none;
39
+ transition: top 0.35s cubic-bezier(0.2, 0.9, 0.3, 1),
40
+ left 0.35s cubic-bezier(0.2, 0.9, 0.3, 1),
41
+ width 0.35s cubic-bezier(0.2, 0.9, 0.3, 1),
42
+ height 0.35s cubic-bezier(0.2, 0.9, 0.3, 1),
43
+ opacity 0.25s ease;
44
+ z-index: 10001;
45
+ }
46
+
47
+ /* Animated Virtual Mouse Cursor */
48
+ .tutorial-cursor {
49
+ position: fixed;
50
+ top: 0;
51
+ left: 0;
52
+ width: 32px;
53
+ height: 32px;
54
+ z-index: 10006;
55
+ pointer-events: none;
56
+ opacity: 0;
57
+ transform: translate(-9999px, -9999px);
58
+ transition: opacity 0.25s ease;
59
+ }
60
+
61
+ .tutorial-cursor.visible {
62
+ opacity: 1;
63
+ }
64
+
65
+ .tutorial-cursor-pointer {
66
+ filter: drop-shadow(0 3px 8px rgba(0, 0, 0, 0.7));
67
+ transition: transform 0.12s ease;
68
+ transform-origin: 0 0;
69
+ }
70
+
71
+ .tutorial-cursor.clicking .tutorial-cursor-pointer {
72
+ transform: scale(0.82);
73
+ }
74
+
75
+ .tutorial-cursor-ripple {
76
+ position: absolute;
77
+ top: 0;
78
+ left: 0;
79
+ width: 36px;
80
+ height: 36px;
81
+ border-radius: 50%;
82
+ border: 2px solid #ffd700;
83
+ background: rgba(255, 215, 0, 0.25);
84
+ box-shadow: 0 0 16px rgba(255, 215, 0, 0.85);
85
+ transform: translate(-18px, -18px) scale(0);
86
+ opacity: 0;
87
+ pointer-events: none;
88
+ }
89
+
90
+ .tutorial-cursor.clicking .tutorial-cursor-ripple {
91
+ animation: cursor-ripple-anim 0.55s cubic-bezier(0.1, 0.8, 0.3, 1) forwards;
92
+ }
93
+
94
+ @keyframes cursor-ripple-anim {
95
+ 0% {
96
+ transform: translate(-18px, -18px) scale(0.2);
97
+ opacity: 1;
98
+ }
99
+ 100% {
100
+ transform: translate(-18px, -18px) scale(2.5);
101
+ opacity: 0;
102
+ }
103
+ }
104
+
105
+ /* Movable Golden Beacon Button */
106
+ .tutorial-beacon {
107
+ position: absolute;
108
+ display: flex;
109
+ align-items: center;
110
+ gap: 8px;
111
+ padding: 8px 18px;
112
+ background: linear-gradient(135deg, #ffd700 0%, #ff9900 100%);
113
+ color: #121212;
114
+ font-family: inherit;
115
+ font-size: 0.95rem;
116
+ font-weight: 700;
117
+ border: 2px solid rgba(255, 255, 255, 0.8);
118
+ border-radius: 9999px;
119
+ box-shadow: 0 4px 20px rgba(255, 180, 0, 0.65), 0 0 30px rgba(255, 215, 0, 0.4);
120
+ cursor: pointer;
121
+ pointer-events: auto;
122
+ z-index: 10002;
123
+ transition: top 0.35s cubic-bezier(0.2, 0.9, 0.3, 1),
124
+ left 0.35s cubic-bezier(0.2, 0.9, 0.3, 1),
125
+ transform 0.2s ease,
126
+ box-shadow 0.2s ease,
127
+ opacity 0.25s ease;
128
+ animation: beacon-pulse 2s infinite ease-in-out;
129
+ }
130
+
131
+ .tutorial-beacon:hover {
132
+ transform: scale(1.06);
133
+ box-shadow: 0 6px 28px rgba(255, 190, 0, 0.85), 0 0 40px rgba(255, 230, 100, 0.6);
134
+ }
135
+
136
+ .tutorial-beacon:active {
137
+ transform: scale(0.96);
138
+ }
139
+
140
+ .tutorial-beacon-icon {
141
+ font-size: 1.15rem;
142
+ line-height: 1;
143
+ }
144
+
145
+ .tutorial-beacon-text {
146
+ letter-spacing: 0.02em;
147
+ }
148
+
149
+ @keyframes beacon-pulse {
150
+ 0%, 100% {
151
+ box-shadow: 0 4px 20px rgba(255, 180, 0, 0.65), 0 0 15px rgba(255, 215, 0, 0.4);
152
+ }
153
+ 50% {
154
+ box-shadow: 0 4px 30px rgba(255, 200, 0, 0.9), 0 0 35px rgba(255, 230, 50, 0.7);
155
+ }
156
+ }
157
+
158
+ /* Floating Glassmorphic Narration Card */
159
+ .tutorial-card {
160
+ position: absolute;
161
+ width: 440px;
162
+ max-width: calc(100vw - 32px);
163
+ background: rgba(18, 22, 34, 0.95);
164
+ backdrop-filter: blur(16px);
165
+ -webkit-backdrop-filter: blur(16px);
166
+ border: 1px solid rgba(255, 215, 0, 0.35);
167
+ border-radius: 14px;
168
+ box-shadow: 0 16px 40px rgba(0, 0, 0, 0.75), 0 0 20px rgba(255, 200, 0, 0.15);
169
+ padding: 22px 24px;
170
+ color: #e2e8f0;
171
+ pointer-events: auto;
172
+ z-index: 10002;
173
+ transition: top 0.35s cubic-bezier(0.2, 0.9, 0.3, 1),
174
+ left 0.35s cubic-bezier(0.2, 0.9, 0.3, 1),
175
+ opacity 0.25s ease;
176
+ }
177
+
178
+ .tutorial-card.placement-center {
179
+ top: 50% !important;
180
+ left: 50% !important;
181
+ transform: translate(-50%, -50%);
182
+ width: 620px;
183
+ border-color: rgba(255, 215, 0, 0.45);
184
+ box-shadow: 0 20px 60px rgba(0, 0, 0, 0.85), 0 0 40px rgba(255, 200, 0, 0.25);
185
+ }
186
+
187
+ .tutorial-card-header {
188
+ display: flex;
189
+ align-items: center;
190
+ justify-content: space-between;
191
+ margin-bottom: 12px;
192
+ }
193
+
194
+ .tutorial-step-badge {
195
+ font-size: 0.75rem;
196
+ font-weight: 700;
197
+ text-transform: uppercase;
198
+ letter-spacing: 0.08em;
199
+ color: #ffd700;
200
+ background: rgba(255, 215, 0, 0.12);
201
+ padding: 4px 10px;
202
+ border-radius: 9999px;
203
+ border: 1px solid rgba(255, 215, 0, 0.3);
204
+ }
205
+
206
+ .tutorial-card-close {
207
+ background: none;
208
+ border: none;
209
+ color: #94a3b8;
210
+ font-size: 1.25rem;
211
+ cursor: pointer;
212
+ padding: 4px 8px;
213
+ border-radius: 6px;
214
+ transition: color 0.15s ease, background 0.15s ease;
215
+ }
216
+
217
+ .tutorial-card-close:hover {
218
+ color: #ffffff;
219
+ background: rgba(255, 255, 255, 0.1);
220
+ }
221
+
222
+ .tutorial-card-title {
223
+ margin: 0 0 12px 0;
224
+ font-size: 1.25rem;
225
+ font-weight: 700;
226
+ color: #ffffff;
227
+ line-height: 1.35;
228
+ }
229
+
230
+ .tutorial-card-body {
231
+ font-size: 0.92rem;
232
+ line-height: 1.6;
233
+ color: #cbd5e1;
234
+ margin-bottom: 20px;
235
+ max-height: 55vh;
236
+ overflow-y: auto;
237
+ }
238
+
239
+ .tutorial-card-body p {
240
+ margin: 0 0 10px 0;
241
+ }
242
+
243
+ .tutorial-card-body p:last-child {
244
+ margin-bottom: 0;
245
+ }
246
+
247
+ .tutorial-card-body strong {
248
+ color: #f8fafc;
249
+ }
250
+
251
+ .tutorial-card-body em {
252
+ color: #ffd700;
253
+ font-style: normal;
254
+ }
255
+
256
+ .tutorial-card-footer {
257
+ display: flex;
258
+ align-items: center;
259
+ justify-content: space-between;
260
+ padding-top: 14px;
261
+ border-top: 1px solid rgba(255, 255, 255, 0.08);
262
+ }
263
+
264
+ .tutorial-progress-dots {
265
+ display: flex;
266
+ gap: 6px;
267
+ }
268
+
269
+ .tutorial-dot {
270
+ width: 8px;
271
+ height: 8px;
272
+ border-radius: 9999px;
273
+ background: rgba(255, 255, 255, 0.2);
274
+ transition: background 0.25s ease, transform 0.25s ease;
275
+ }
276
+
277
+ .tutorial-dot.active {
278
+ background: #ffd700;
279
+ transform: scale(1.25);
280
+ box-shadow: 0 0 8px #ffd700;
281
+ }
282
+
283
+ .tutorial-card-actions {
284
+ display: flex;
285
+ align-items: center;
286
+ gap: 10px;
287
+ }
288
+
289
+ .tutorial-btn-skip {
290
+ background: none;
291
+ border: none;
292
+ color: #94a3b8;
293
+ font-size: 0.85rem;
294
+ cursor: pointer;
295
+ padding: 6px 12px;
296
+ border-radius: 6px;
297
+ transition: color 0.15s ease;
298
+ }
299
+
300
+ .tutorial-btn-skip:hover {
301
+ color: #ffffff;
302
+ }
303
+
304
+ .tutorial-btn-next {
305
+ display: inline-flex;
306
+ align-items: center;
307
+ gap: 6px;
308
+ background: linear-gradient(135deg, #ffd700 0%, #ffaa00 100%);
309
+ color: #0f172a;
310
+ font-weight: 700;
311
+ font-size: 0.9rem;
312
+ padding: 8px 18px;
313
+ border: none;
314
+ border-radius: 8px;
315
+ cursor: pointer;
316
+ box-shadow: 0 4px 14px rgba(255, 180, 0, 0.4);
317
+ transition: transform 0.15s ease, box-shadow 0.15s ease;
318
+ }
319
+
320
+ .tutorial-btn-next:hover {
321
+ transform: translateY(-1px);
322
+ box-shadow: 0 6px 20px rgba(255, 180, 0, 0.6);
323
+ }
324
+
325
+ .tutorial-btn-next:active {
326
+ transform: translateY(1px);
327
+ }
@@ -233,6 +233,12 @@
233
233
 
234
234
  <!-- File Explorer Container (Web Component injected dynamically) -->
235
235
  <div id="code-file-explorer-container" class="code-file-explorer-container"></div>
236
+ <!-- Resizer between Explorer and Changes -->
237
+ <div id="resizer-explorer-changes" class="accordion-resizer" title="Drag to resize, double-click to reset"></div>
238
+ <!-- Changes / Staging Accordion Container (Web Component injected dynamically) -->
239
+ <div id="code-changes-container" class="code-changes-container"></div>
240
+ <!-- Resizer between Changes and Timeline -->
241
+ <div id="resizer-changes-timeline" class="accordion-resizer" title="Drag to resize, double-click to reset"></div>
236
242
  <!-- Timeline Container (Web Component injected dynamically) -->
237
243
  <div id="code-timeline-container" class="code-timeline-container"></div>
238
244
  </div>