project-logbook 1.2.0 → 1.3.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 (193) hide show
  1. package/README.md +2 -0
  2. package/dist/commands/build.js +7 -4
  3. package/dist/commands/build.js.map +1 -1
  4. package/dist/commands/log.js +2 -0
  5. package/dist/commands/log.js.map +1 -1
  6. package/dist/commands/new-helpers.d.ts +0 -1
  7. package/dist/commands/new-helpers.js +6 -3
  8. package/dist/commands/new-helpers.js.map +1 -1
  9. package/dist/commands/release.js +2 -0
  10. package/dist/commands/release.js.map +1 -1
  11. package/dist/commands/start.js +90 -21
  12. package/dist/commands/start.js.map +1 -1
  13. package/dist/commands/status.js +3 -0
  14. package/dist/commands/status.js.map +1 -1
  15. package/dist/commands/watch.d.ts +15 -0
  16. package/dist/commands/watch.js +153 -0
  17. package/dist/commands/watch.js.map +1 -0
  18. package/dist/index.js +7 -0
  19. package/dist/index.js.map +1 -1
  20. package/dist/lib/autolink.d.ts +5 -0
  21. package/dist/lib/autolink.js +36 -2
  22. package/dist/lib/autolink.js.map +1 -1
  23. package/dist/lib/build-helpers.d.ts +10 -1
  24. package/dist/lib/build-helpers.js +27 -4
  25. package/dist/lib/build-helpers.js.map +1 -1
  26. package/dist/lib/build-steps.js +2 -1
  27. package/dist/lib/build-steps.js.map +1 -1
  28. package/dist/lib/config.d.ts +8 -0
  29. package/dist/lib/config.js +7 -0
  30. package/dist/lib/config.js.map +1 -1
  31. package/dist/lib/custom-card-renderer.js +2 -1
  32. package/dist/lib/custom-card-renderer.js.map +1 -1
  33. package/dist/lib/entry-href.d.ts +7 -0
  34. package/dist/lib/entry-href.js +8 -0
  35. package/dist/lib/entry-href.js.map +1 -0
  36. package/dist/lib/markdown-processors.d.ts +2 -1
  37. package/dist/lib/post-template.js +3 -3
  38. package/dist/lib/post-template.js.map +1 -1
  39. package/dist/lib/template-helpers.js +3 -2
  40. package/dist/lib/template-helpers.js.map +1 -1
  41. package/dist/lib/template-types.d.ts +2 -0
  42. package/dist/lib/templates.js +5 -3
  43. package/dist/lib/templates.js.map +1 -1
  44. package/dist/linters/jira-prefix.js +32 -16
  45. package/dist/linters/jira-prefix.js.map +1 -1
  46. package/dist/templates/about-watch.md +29 -0
  47. package/dist/templates/hub.css +677 -0
  48. package/dist/templates/hub.js +628 -0
  49. package/dist/utils/id.d.ts +1 -1
  50. package/dist/utils/id.js +4 -1
  51. package/dist/utils/id.js.map +1 -1
  52. package/dist/watch/collector.d.ts +14 -0
  53. package/dist/watch/collector.js +33 -0
  54. package/dist/watch/collector.js.map +1 -0
  55. package/dist/watch/collectors/acli.d.ts +15 -0
  56. package/dist/watch/collectors/acli.js +197 -0
  57. package/dist/watch/collectors/acli.js.map +1 -0
  58. package/dist/watch/collectors/entries.d.ts +9 -0
  59. package/dist/watch/collectors/entries.js +90 -0
  60. package/dist/watch/collectors/entries.js.map +1 -0
  61. package/dist/watch/collectors/git.d.ts +12 -0
  62. package/dist/watch/collectors/git.js +58 -0
  63. package/dist/watch/collectors/git.js.map +1 -0
  64. package/dist/watch/collectors/glab.d.ts +10 -0
  65. package/dist/watch/collectors/glab.js +184 -0
  66. package/dist/watch/collectors/glab.js.map +1 -0
  67. package/dist/watch/collectors/index.d.ts +10 -0
  68. package/dist/watch/collectors/index.js +21 -0
  69. package/dist/watch/collectors/index.js.map +1 -0
  70. package/dist/watch/collectors/jira.d.ts +3 -0
  71. package/dist/watch/collectors/jira.js +110 -0
  72. package/dist/watch/collectors/jira.js.map +1 -0
  73. package/dist/watch/collectors/type-guards.d.ts +17 -0
  74. package/dist/watch/collectors/type-guards.js +35 -0
  75. package/dist/watch/collectors/type-guards.js.map +1 -0
  76. package/dist/watch/collectors/types.d.ts +37 -0
  77. package/dist/watch/collectors/types.js +9 -0
  78. package/dist/watch/collectors/types.js.map +1 -0
  79. package/dist/watch/dashboard-html.d.ts +11 -0
  80. package/dist/watch/dashboard-html.js +73 -0
  81. package/dist/watch/dashboard-html.js.map +1 -0
  82. package/dist/watch/dashboard-script.d.ts +12 -0
  83. package/dist/watch/dashboard-script.js +20 -0
  84. package/dist/watch/dashboard-script.js.map +1 -0
  85. package/dist/watch/dashboard-styles.d.ts +12 -0
  86. package/dist/watch/dashboard-styles.js +20 -0
  87. package/dist/watch/dashboard-styles.js.map +1 -0
  88. package/dist/watch/dashboard.d.ts +12 -0
  89. package/dist/watch/dashboard.js +50 -0
  90. package/dist/watch/dashboard.js.map +1 -0
  91. package/dist/watch/git-utils.d.ts +30 -0
  92. package/dist/watch/git-utils.js +101 -0
  93. package/dist/watch/git-utils.js.map +1 -0
  94. package/dist/watch/hub-state.d.ts +37 -0
  95. package/dist/watch/hub-state.js +55 -0
  96. package/dist/watch/hub-state.js.map +1 -0
  97. package/dist/watch/hub.d.ts +2 -0
  98. package/dist/watch/hub.js +219 -0
  99. package/dist/watch/hub.js.map +1 -0
  100. package/dist/watch/log-utils.d.ts +13 -0
  101. package/dist/watch/log-utils.js +24 -0
  102. package/dist/watch/log-utils.js.map +1 -0
  103. package/dist/watch/notify.d.ts +18 -0
  104. package/dist/watch/notify.js +45 -0
  105. package/dist/watch/notify.js.map +1 -0
  106. package/dist/watch/state.d.ts +34 -0
  107. package/dist/watch/state.js +36 -0
  108. package/dist/watch/state.js.map +1 -0
  109. package/dist/watch/strategies/behind-default.d.ts +5 -0
  110. package/dist/watch/strategies/behind-default.js +21 -0
  111. package/dist/watch/strategies/behind-default.js.map +1 -0
  112. package/dist/watch/strategies/idle.d.ts +5 -0
  113. package/dist/watch/strategies/idle.js +21 -0
  114. package/dist/watch/strategies/idle.js.map +1 -0
  115. package/dist/watch/strategies/in-progress.d.ts +5 -0
  116. package/dist/watch/strategies/in-progress.js +21 -0
  117. package/dist/watch/strategies/in-progress.js.map +1 -0
  118. package/dist/watch/strategies/index.d.ts +34 -0
  119. package/dist/watch/strategies/index.js +148 -0
  120. package/dist/watch/strategies/index.js.map +1 -0
  121. package/dist/watch/strategies/jira-not-in-review.d.ts +2 -0
  122. package/dist/watch/strategies/jira-not-in-review.js +29 -0
  123. package/dist/watch/strategies/jira-not-in-review.js.map +1 -0
  124. package/dist/watch/strategies/jira-still-open.d.ts +2 -0
  125. package/dist/watch/strategies/jira-still-open.js +31 -0
  126. package/dist/watch/strategies/jira-still-open.js.map +1 -0
  127. package/dist/watch/strategies/mr-approval-optional.d.ts +5 -0
  128. package/dist/watch/strategies/mr-approval-optional.js +21 -0
  129. package/dist/watch/strategies/mr-approval-optional.js.map +1 -0
  130. package/dist/watch/strategies/mr-approved.d.ts +5 -0
  131. package/dist/watch/strategies/mr-approved.js +21 -0
  132. package/dist/watch/strategies/mr-approved.js.map +1 -0
  133. package/dist/watch/strategies/mr-conflicts.d.ts +5 -0
  134. package/dist/watch/strategies/mr-conflicts.js +21 -0
  135. package/dist/watch/strategies/mr-conflicts.js.map +1 -0
  136. package/dist/watch/strategies/mr-draft.d.ts +5 -0
  137. package/dist/watch/strategies/mr-draft.js +21 -0
  138. package/dist/watch/strategies/mr-draft.js.map +1 -0
  139. package/dist/watch/strategies/mr-open-comments.d.ts +5 -0
  140. package/dist/watch/strategies/mr-open-comments.js +21 -0
  141. package/dist/watch/strategies/mr-open-comments.js.map +1 -0
  142. package/dist/watch/strategies/narrative-missing.d.ts +5 -0
  143. package/dist/watch/strategies/narrative-missing.js +21 -0
  144. package/dist/watch/strategies/narrative-missing.js.map +1 -0
  145. package/dist/watch/strategies/no-mr.d.ts +5 -0
  146. package/dist/watch/strategies/no-mr.js +21 -0
  147. package/dist/watch/strategies/no-mr.js.map +1 -0
  148. package/dist/watch/strategies/pipeline-failed.d.ts +5 -0
  149. package/dist/watch/strategies/pipeline-failed.js +21 -0
  150. package/dist/watch/strategies/pipeline-failed.js.map +1 -0
  151. package/dist/watch/strategies/pipeline-running.d.ts +5 -0
  152. package/dist/watch/strategies/pipeline-running.js +21 -0
  153. package/dist/watch/strategies/pipeline-running.js.map +1 -0
  154. package/dist/watch/strategies/ready-for-release.d.ts +7 -0
  155. package/dist/watch/strategies/ready-for-release.js +35 -0
  156. package/dist/watch/strategies/ready-for-release.js.map +1 -0
  157. package/dist/watch/strategies/ready-to-commit.d.ts +5 -0
  158. package/dist/watch/strategies/ready-to-commit.js +21 -0
  159. package/dist/watch/strategies/ready-to-commit.js.map +1 -0
  160. package/dist/watch/strategies/ready-to-push.d.ts +5 -0
  161. package/dist/watch/strategies/ready-to-push.js +21 -0
  162. package/dist/watch/strategies/ready-to-push.js.map +1 -0
  163. package/dist/watch/strategies/released.d.ts +6 -0
  164. package/dist/watch/strategies/released.js +21 -0
  165. package/dist/watch/strategies/released.js.map +1 -0
  166. package/dist/watch/strategies/squash-merged.d.ts +6 -0
  167. package/dist/watch/strategies/squash-merged.js +21 -0
  168. package/dist/watch/strategies/squash-merged.js.map +1 -0
  169. package/dist/watch/strategies/types.d.ts +31 -0
  170. package/dist/watch/strategies/types.js +12 -0
  171. package/dist/watch/strategies/types.js.map +1 -0
  172. package/dist/watch/strategies/unstaged-changes.d.ts +5 -0
  173. package/dist/watch/strategies/unstaged-changes.js +21 -0
  174. package/dist/watch/strategies/unstaged-changes.js.map +1 -0
  175. package/dist/watch/strategies/wrong-branch.d.ts +6 -0
  176. package/dist/watch/strategies/wrong-branch.js +26 -0
  177. package/dist/watch/strategies/wrong-branch.js.map +1 -0
  178. package/dist/watch/types.d.ts +190 -0
  179. package/dist/watch/types.js +25 -0
  180. package/dist/watch/types.js.map +1 -0
  181. package/dist/watch/watcher-fs.d.ts +39 -0
  182. package/dist/watch/watcher-fs.js +105 -0
  183. package/dist/watch/watcher-fs.js.map +1 -0
  184. package/dist/watch/watcher-http.d.ts +19 -0
  185. package/dist/watch/watcher-http.js +47 -0
  186. package/dist/watch/watcher-http.js.map +1 -0
  187. package/dist/watch/watcher.d.ts +4 -0
  188. package/dist/watch/watcher.js +174 -0
  189. package/dist/watch/watcher.js.map +1 -0
  190. package/package.json +2 -1
  191. package/src/templates/about-watch.md +29 -0
  192. package/src/templates/hub.css +677 -0
  193. package/src/templates/hub.js +628 -0
@@ -0,0 +1,677 @@
1
+ /* logbook Hub Dashboard — uses logbook CSS variables */
2
+
3
+ * {
4
+ box-sizing: border-box;
5
+ margin: 0;
6
+ padding: 0;
7
+ }
8
+
9
+ body {
10
+ font-family: -apple-system, BlinkMacSystemFont, 'Inter', 'Segoe UI', Roboto, sans-serif;
11
+ background: var(--bg, #f5f5f5);
12
+ color: var(--text, #1a1a1a);
13
+ line-height: 1.5;
14
+ min-height: 100vh;
15
+ }
16
+
17
+ header {
18
+ background: var(--card-bg, #fff);
19
+ border-bottom: 1px solid var(--border, #eee);
20
+ padding: 12px 24px;
21
+ }
22
+
23
+ header h1 {
24
+ font-size: 1.25rem;
25
+ font-weight: 700;
26
+ color: var(--primary, #2563eb);
27
+ letter-spacing: -0.02em;
28
+ }
29
+
30
+ /* Tab bar */
31
+ .tab-bar {
32
+ display: flex;
33
+ gap: 0;
34
+ background: var(--card-bg, #fff);
35
+ border-bottom: 1px solid var(--border, #eee);
36
+ padding: 0 24px;
37
+ overflow-x: auto;
38
+ }
39
+
40
+ .tab-btn {
41
+ padding: 10px 18px;
42
+ border: none;
43
+ background: none;
44
+ cursor: pointer;
45
+ font-size: 0.85rem;
46
+ font-weight: 500;
47
+ color: var(--text-muted, #666);
48
+ border-bottom: 2px solid transparent;
49
+ white-space: nowrap;
50
+ transition:
51
+ color 0.15s,
52
+ border-color 0.15s;
53
+ }
54
+
55
+ .tab-btn:hover {
56
+ color: var(--text, #1a1a1a);
57
+ }
58
+
59
+ .tab-btn.active {
60
+ color: var(--primary, #2563eb);
61
+ border-bottom-color: var(--primary, #2563eb);
62
+ }
63
+
64
+ .tab-count {
65
+ background: var(--primary-soft, #2563eb15);
66
+ color: var(--primary, #2563eb);
67
+ border-radius: 10px;
68
+ padding: 1px 7px;
69
+ font-size: 0.75rem;
70
+ font-weight: 600;
71
+ margin-left: 4px;
72
+ }
73
+
74
+ /* Header row */
75
+ .sort-toggle {
76
+ background: none;
77
+ border: 1px solid var(--border, #eee);
78
+ border-radius: 6px;
79
+ padding: 4px 12px;
80
+ font-size: 0.8rem;
81
+ cursor: pointer;
82
+ color: var(--text-muted, #666);
83
+ }
84
+
85
+ .sort-toggle:hover {
86
+ background: var(--primary-soft, #2563eb15);
87
+ color: var(--primary, #2563eb);
88
+ border-color: var(--primary, #2563eb);
89
+ }
90
+
91
+ /* Container */
92
+ .container {
93
+ max-width: 1000px;
94
+ margin: 0 auto;
95
+ padding: 16px 24px;
96
+ }
97
+
98
+ .tab-content {
99
+ display: none;
100
+ }
101
+
102
+ .tab-content.active {
103
+ display: block;
104
+ }
105
+
106
+ /* Project cards */
107
+ .projects {
108
+ display: flex;
109
+ flex-direction: column;
110
+ gap: 12px;
111
+ }
112
+
113
+ .empty {
114
+ text-align: center;
115
+ color: var(--text-muted, #666);
116
+ padding: 48px 24px;
117
+ font-size: 0.95rem;
118
+ }
119
+
120
+ /* Card (generated by hub.js) */
121
+ .card {
122
+ background: var(--card-bg, #fff);
123
+ border: 1px solid var(--border, #eee);
124
+ border-radius: 8px;
125
+ padding: 14px 18px;
126
+ cursor: pointer;
127
+ transition: box-shadow 0.15s;
128
+ border-left: 3px solid var(--border, #dee2e6);
129
+ }
130
+
131
+ .card:hover {
132
+ box-shadow: 0 2px 8px rgba(0, 0, 0, 0.06);
133
+ }
134
+
135
+ .card-header {
136
+ display: flex;
137
+ align-items: center;
138
+ gap: 8px;
139
+ margin-bottom: 4px;
140
+ }
141
+
142
+ .card-title {
143
+ font-weight: 600;
144
+ font-size: 0.95rem;
145
+ color: var(--text, #1a1a1a);
146
+ }
147
+
148
+ .card-agent {
149
+ font-size: 0.7rem;
150
+ background: var(--primary-soft, #2563eb15);
151
+ color: var(--primary, #2563eb);
152
+ padding: 1px 6px;
153
+ border-radius: 4px;
154
+ font-weight: 500;
155
+ }
156
+
157
+ .card-time {
158
+ margin-left: auto;
159
+ font-size: 0.75rem;
160
+ color: var(--text-muted, #666);
161
+ white-space: nowrap;
162
+ }
163
+
164
+ .card-meta {
165
+ display: flex;
166
+ flex-wrap: wrap;
167
+ gap: 6px 16px;
168
+ margin-bottom: 4px;
169
+ }
170
+
171
+ .meta-item {
172
+ font-size: 0.8rem;
173
+ color: var(--text-muted, #666);
174
+ display: flex;
175
+ align-items: center;
176
+ gap: 3px;
177
+ }
178
+
179
+ .meta-label {
180
+ font-size: 0.72rem;
181
+ text-transform: uppercase;
182
+ letter-spacing: 0.03em;
183
+ opacity: 0.8;
184
+ }
185
+
186
+ .meta-value {
187
+ font-weight: 500;
188
+ color: var(--text, #1a1a1a);
189
+ }
190
+
191
+ .meta-link {
192
+ color: var(--primary, #2563eb);
193
+ text-decoration: none;
194
+ }
195
+
196
+ .meta-link:hover {
197
+ text-decoration: underline;
198
+ }
199
+
200
+ .link-icon {
201
+ font-size: 0.7rem;
202
+ }
203
+
204
+ .meta-path {
205
+ font-family: monospace;
206
+ font-size: 0.75rem;
207
+ max-width: 300px;
208
+ overflow: hidden;
209
+ text-overflow: ellipsis;
210
+ white-space: nowrap;
211
+ display: inline-block;
212
+ vertical-align: bottom;
213
+ }
214
+
215
+ .card-path {
216
+ font-size: 0.75rem;
217
+ color: var(--text-muted, #666);
218
+ margin-bottom: 4px;
219
+ }
220
+
221
+ .jira-status {
222
+ font-size: 0.72rem;
223
+ background: var(--border, #eee);
224
+ padding: 1px 5px;
225
+ border-radius: 4px;
226
+ font-weight: 600;
227
+ }
228
+
229
+ /* Badges */
230
+ .badges {
231
+ display: flex;
232
+ flex-wrap: wrap;
233
+ gap: 5px;
234
+ margin-top: 4px;
235
+ align-items: center;
236
+ }
237
+
238
+ .badge {
239
+ display: inline-flex;
240
+ align-items: center;
241
+ gap: 4px;
242
+ font-size: 0.72rem;
243
+ font-weight: 600;
244
+ padding: 2px 8px;
245
+ border-radius: 10px;
246
+ white-space: nowrap;
247
+ letter-spacing: 0.01em;
248
+ text-decoration: none;
249
+ }
250
+
251
+ .badge-success {
252
+ background: #dcfce7;
253
+ color: #166534;
254
+ }
255
+
256
+ .badge-warning {
257
+ background: #fef9c3;
258
+ color: #854d0e;
259
+ }
260
+
261
+ .badge-info {
262
+ background: #e0f2fe;
263
+ color: #075985;
264
+ }
265
+
266
+ /* Card log */
267
+ .card-log {
268
+ margin-top: 6px;
269
+ font-size: 0.8rem;
270
+ color: var(--text-muted, #666);
271
+ padding: 6px 10px;
272
+ background: var(--bg, #f5f5f5);
273
+ border-radius: 4px;
274
+ font-style: italic;
275
+ overflow: hidden;
276
+ text-overflow: ellipsis;
277
+ white-space: nowrap;
278
+ }
279
+
280
+ /* Card details (expandable) */
281
+ .card-details {
282
+ margin-top: 6px;
283
+ display: none;
284
+ }
285
+
286
+ .card.expanded .card-details {
287
+ display: block;
288
+ }
289
+
290
+ .details-grid {
291
+ display: grid;
292
+ grid-template-columns: repeat(auto-fill, minmax(120px, 1fr));
293
+ gap: 6px;
294
+ padding: 10px;
295
+ background: var(--bg, #f5f5f5);
296
+ border-radius: 6px;
297
+ }
298
+
299
+ .detail-item {
300
+ display: flex;
301
+ flex-direction: column;
302
+ }
303
+
304
+ .detail-label {
305
+ font-size: 0.68rem;
306
+ color: var(--text-muted, #666);
307
+ text-transform: uppercase;
308
+ letter-spacing: 0.04em;
309
+ }
310
+
311
+ .detail-value {
312
+ font-weight: 600;
313
+ font-size: 0.9rem;
314
+ }
315
+
316
+ .detail-value.positive {
317
+ color: #166534;
318
+ }
319
+
320
+ .detail-value.negative {
321
+ color: #991b1b;
322
+ }
323
+
324
+ /* Activity timeline */
325
+ .activity-timeline {
326
+ margin-top: 8px;
327
+ padding: 8px 10px;
328
+ background: var(--bg, #f5f5f5);
329
+ border-radius: 6px;
330
+ }
331
+
332
+ .activity-timeline h4 {
333
+ font-size: 0.75rem;
334
+ font-weight: 600;
335
+ color: var(--text-muted, #666);
336
+ margin-bottom: 4px;
337
+ text-transform: uppercase;
338
+ letter-spacing: 0.04em;
339
+ }
340
+
341
+ .activity-list {
342
+ list-style: none;
343
+ padding: 0;
344
+ max-height: 100px;
345
+ overflow-y: auto;
346
+ }
347
+
348
+ .activity-list li {
349
+ font-size: 0.75rem;
350
+ color: var(--text-muted, #666);
351
+ padding: 2px 0;
352
+ border-bottom: 1px solid var(--border, #eee);
353
+ display: flex;
354
+ gap: 6px;
355
+ }
356
+
357
+ .activity-list li:last-child {
358
+ border-bottom: none;
359
+ }
360
+
361
+ .activity-time {
362
+ white-space: nowrap;
363
+ font-size: 0.68rem;
364
+ min-width: 50px;
365
+ }
366
+
367
+ .activity-source {
368
+ font-size: 0.68rem;
369
+ opacity: 0.7;
370
+ min-width: 55px;
371
+ }
372
+
373
+ .activity-desc {
374
+ overflow: hidden;
375
+ text-overflow: ellipsis;
376
+ white-space: nowrap;
377
+ }
378
+
379
+ /* Preview buttons */
380
+ .preview-buttons {
381
+ display: inline-flex;
382
+ gap: 3px;
383
+ margin-left: auto;
384
+ }
385
+
386
+ .preview-btn {
387
+ background: none;
388
+ border: 1px solid var(--border, #eee);
389
+ border-radius: 4px;
390
+ padding: 1px 6px;
391
+ font-size: 0.68rem;
392
+ cursor: pointer;
393
+ color: var(--text-muted, #666);
394
+ line-height: 1.5;
395
+ }
396
+
397
+ .preview-btn:hover {
398
+ background: var(--primary-soft, #2563eb15);
399
+ color: var(--primary, #2563eb);
400
+ border-color: var(--primary, #2563eb);
401
+ }
402
+
403
+ /* Collector footer */
404
+ .card-collector-footer {
405
+ font-size: 0.7rem;
406
+ color: var(--text-muted, #666);
407
+ text-align: right;
408
+ margin-top: 4px;
409
+ padding-top: 4px;
410
+ border-top: 1px solid var(--border, #eee);
411
+ }
412
+
413
+ /* Lightbox */
414
+ .lightbox {
415
+ display: none;
416
+ position: fixed;
417
+ top: 0;
418
+ left: 0;
419
+ width: 100%;
420
+ height: 100%;
421
+ background: rgba(0, 0, 0, 0.5);
422
+ z-index: 100;
423
+ justify-content: center;
424
+ align-items: center;
425
+ }
426
+
427
+ .lightbox.open {
428
+ display: flex;
429
+ }
430
+
431
+ .lightbox-content {
432
+ background: var(--card-bg, #fff);
433
+ border-radius: 12px;
434
+ width: 90%;
435
+ max-width: 700px;
436
+ max-height: 85vh;
437
+ overflow-y: auto;
438
+ position: relative;
439
+ box-shadow: 0 8px 32px rgba(0, 0, 0, 0.2);
440
+ }
441
+
442
+ .lightbox-close {
443
+ position: absolute;
444
+ top: 12px;
445
+ right: 16px;
446
+ background: none;
447
+ border: none;
448
+ font-size: 1.5rem;
449
+ cursor: pointer;
450
+ color: var(--text-muted, #666);
451
+ z-index: 1;
452
+ }
453
+
454
+ .lightbox-close:hover {
455
+ color: var(--text, #1a1a1a);
456
+ }
457
+
458
+ .lightbox-title {
459
+ padding: 20px 24px 8px;
460
+ font-weight: 700;
461
+ font-size: 1.1rem;
462
+ }
463
+
464
+ .lightbox-body {
465
+ padding: 0 24px 24px;
466
+ font-size: 0.9rem;
467
+ line-height: 1.7;
468
+ }
469
+
470
+ .lightbox-body h1,
471
+ .lightbox-body h2,
472
+ .lightbox-body h3 {
473
+ margin-top: 1em;
474
+ margin-bottom: 0.5em;
475
+ }
476
+
477
+ .lightbox-body p {
478
+ margin-bottom: 0.8em;
479
+ }
480
+
481
+ .lightbox-body code {
482
+ background: var(--border, #eee);
483
+ padding: 1px 4px;
484
+ border-radius: 3px;
485
+ font-size: 0.82rem;
486
+ }
487
+
488
+ .lightbox-body pre {
489
+ background: var(--bg, #f5f5f5);
490
+ padding: 12px;
491
+ border-radius: 6px;
492
+ overflow-x: auto;
493
+ font-size: 0.82rem;
494
+ margin-bottom: 0.8em;
495
+ }
496
+
497
+ .lightbox-body ul {
498
+ margin-bottom: 0.8em;
499
+ padding-left: 20px;
500
+ }
501
+
502
+ .lightbox-body .empty-content {
503
+ color: var(--text-muted, #666);
504
+ text-align: center;
505
+ padding: 24px;
506
+ }
507
+
508
+ /* Tab headings */
509
+ .tab-heading {
510
+ font-size: 1.1rem;
511
+ font-weight: 700;
512
+ margin-bottom: 4px;
513
+ }
514
+
515
+ .tab-description {
516
+ font-size: 0.85rem;
517
+ color: var(--text-muted, #666);
518
+ margin-bottom: 16px;
519
+ }
520
+
521
+ .tab-header-row {
522
+ display: flex;
523
+ align-items: center;
524
+ justify-content: space-between;
525
+ margin-bottom: 8px;
526
+ }
527
+
528
+ /* Help table */
529
+ .help-table {
530
+ width: 100%;
531
+ border-collapse: collapse;
532
+ font-size: 0.82rem;
533
+ }
534
+
535
+ .help-table th,
536
+ .help-table td {
537
+ text-align: left;
538
+ padding: 8px 12px;
539
+ border-bottom: 1px solid var(--border, #eee);
540
+ }
541
+
542
+ .help-table th {
543
+ font-weight: 600;
544
+ color: var(--text-muted, #666);
545
+ font-size: 0.75rem;
546
+ text-transform: uppercase;
547
+ letter-spacing: 0.04em;
548
+ }
549
+
550
+ .help-group-header td {
551
+ font-weight: 700;
552
+ color: var(--text, #1a1a1a);
553
+ background: var(--bg, #f5f5f5);
554
+ font-size: 0.8rem;
555
+ text-transform: none;
556
+ letter-spacing: normal;
557
+ }
558
+
559
+ .blocked-by {
560
+ font-size: 0.72rem;
561
+ color: var(--text-muted, #666);
562
+ opacity: 0.8;
563
+ }
564
+
565
+ .table-loading {
566
+ text-align: center;
567
+ color: var(--text-muted, #666);
568
+ padding: 24px !important;
569
+ }
570
+
571
+ /* Placeholder message */
572
+ .placeholder-msg {
573
+ text-align: center;
574
+ color: var(--text-muted, #666);
575
+ padding: 48px 24px;
576
+ font-size: 0.9rem;
577
+ }
578
+
579
+ .placeholder-msg code {
580
+ background: var(--border, #eee);
581
+ padding: 1px 5px;
582
+ border-radius: 3px;
583
+ font-size: 0.82rem;
584
+ }
585
+
586
+ /* Group headings (Jira/GitLab tabs) */
587
+ .group-heading {
588
+ font-size: 0.9rem;
589
+ font-weight: 700;
590
+ margin-top: 16px;
591
+ margin-bottom: 8px;
592
+ }
593
+
594
+ .group-heading:first-child {
595
+ margin-top: 0;
596
+ }
597
+
598
+ .group-link-icon {
599
+ font-size: 0.8rem;
600
+ }
601
+
602
+ /* Cell helpers */
603
+ .cell-mono {
604
+ font-family: monospace;
605
+ font-size: 0.78rem;
606
+ }
607
+
608
+ .cell-time {
609
+ white-space: nowrap;
610
+ font-size: 0.75rem;
611
+ color: var(--text-muted, #666);
612
+ }
613
+
614
+ .cell-branch {
615
+ max-width: 200px;
616
+ overflow: hidden;
617
+ text-overflow: ellipsis;
618
+ white-space: nowrap;
619
+ }
620
+
621
+ /* Collector footers in tabs */
622
+ .tab-collector-footer {
623
+ font-size: 0.72rem;
624
+ color: var(--text-muted, #666);
625
+ text-align: right;
626
+ padding: 4px 0;
627
+ margin-top: 4px;
628
+ }
629
+
630
+ /* Connection status */
631
+ .connection-status {
632
+ position: fixed;
633
+ bottom: 12px;
634
+ right: 16px;
635
+ font-size: 0.7rem;
636
+ padding: 3px 10px;
637
+ border-radius: 10px;
638
+ background: #dcfce7;
639
+ color: #166534;
640
+ font-weight: 600;
641
+ }
642
+
643
+ .connection-status.disconnected {
644
+ background: #fee2e2;
645
+ color: #991b1b;
646
+ }
647
+
648
+ /* About tab */
649
+ .about-content {
650
+ font-size: 0.9rem;
651
+ line-height: 1.7;
652
+ }
653
+
654
+ .about-content h2 {
655
+ margin-top: 1.2em;
656
+ margin-bottom: 0.5em;
657
+ }
658
+
659
+ .about-content p {
660
+ margin-bottom: 0.8em;
661
+ }
662
+
663
+ .about-content code {
664
+ background: var(--border, #eee);
665
+ padding: 1px 4px;
666
+ border-radius: 3px;
667
+ }
668
+
669
+ /* Scrollbar styling */
670
+ .lightbox-content::-webkit-scrollbar {
671
+ width: 6px;
672
+ }
673
+
674
+ .lightbox-content::-webkit-scrollbar-thumb {
675
+ background: var(--border, #eee);
676
+ border-radius: 3px;
677
+ }