logics-manager 2.3.2__tar.gz → 2.3.3__tar.gz

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 (64) hide show
  1. {logics_manager-2.3.2 → logics_manager-2.3.3}/PKG-INFO +1 -1
  2. {logics_manager-2.3.2 → logics_manager-2.3.3}/README.md +1 -1
  3. {logics_manager-2.3.2 → logics_manager-2.3.3}/logics_manager/viewer.py +8 -0
  4. logics_manager-2.3.3/logics_manager/viewer_assets/media/css/board.css +658 -0
  5. logics_manager-2.3.3/logics_manager/viewer_assets/media/css/details.css +457 -0
  6. logics_manager-2.3.3/logics_manager/viewer_assets/media/css/layout.css +123 -0
  7. logics_manager-2.3.3/logics_manager/viewer_assets/media/css/toolbar.css +576 -0
  8. logics_manager-2.3.3/logics_manager/viewer_assets/media/harnessApi.js +324 -0
  9. logics_manager-2.3.3/logics_manager/viewer_assets/media/hostApi.js +213 -0
  10. logics_manager-2.3.3/logics_manager/viewer_assets/media/hostApiContract.js +55 -0
  11. logics_manager-2.3.3/logics_manager/viewer_assets/media/icon.png +0 -0
  12. logics_manager-2.3.3/logics_manager/viewer_assets/media/layoutController.js +246 -0
  13. logics_manager-2.3.3/logics_manager/viewer_assets/media/logics.svg +7 -0
  14. logics_manager-2.3.3/logics_manager/viewer_assets/media/logicsModel.js +910 -0
  15. logics_manager-2.3.3/logics_manager/viewer_assets/media/main.css +112 -0
  16. logics_manager-2.3.3/logics_manager/viewer_assets/media/main.js +3 -0
  17. logics_manager-2.3.3/logics_manager/viewer_assets/media/mainApp.js +1005 -0
  18. logics_manager-2.3.3/logics_manager/viewer_assets/media/mainCore.js +604 -0
  19. logics_manager-2.3.3/logics_manager/viewer_assets/media/mainInteractionHandlers.js +324 -0
  20. logics_manager-2.3.3/logics_manager/viewer_assets/media/mainInteractions.js +378 -0
  21. logics_manager-2.3.3/logics_manager/viewer_assets/media/renderBoard.js +3 -0
  22. logics_manager-2.3.3/logics_manager/viewer_assets/media/renderBoardApp.js +1339 -0
  23. logics_manager-2.3.3/logics_manager/viewer_assets/media/renderDetails.js +685 -0
  24. logics_manager-2.3.3/logics_manager/viewer_assets/media/renderMarkdown.js +449 -0
  25. logics_manager-2.3.3/logics_manager/viewer_assets/media/toolsPanelLayout.js +172 -0
  26. logics_manager-2.3.3/logics_manager/viewer_assets/media/uiStatus.js +54 -0
  27. logics_manager-2.3.3/logics_manager/viewer_assets/media/webviewChrome.js +405 -0
  28. logics_manager-2.3.3/logics_manager/viewer_assets/media/webviewPersistence.js +116 -0
  29. logics_manager-2.3.3/logics_manager/viewer_assets/media/webviewSelectors.js +491 -0
  30. logics_manager-2.3.3/logics_manager/viewer_assets/vendor/mermaid.min.js +3405 -0
  31. logics_manager-2.3.3/logics_manager/viewer_assets/viewer/browser-host.js +847 -0
  32. logics_manager-2.3.3/logics_manager/viewer_assets/viewer/index.html +237 -0
  33. logics_manager-2.3.3/logics_manager/viewer_assets/viewer/viewer.css +433 -0
  34. {logics_manager-2.3.2 → logics_manager-2.3.3}/logics_manager.egg-info/PKG-INFO +1 -1
  35. logics_manager-2.3.3/logics_manager.egg-info/SOURCES.txt +60 -0
  36. logics_manager-2.3.3/pyproject.toml +30 -0
  37. logics_manager-2.3.2/logics_manager.egg-info/SOURCES.txt +0 -30
  38. logics_manager-2.3.2/pyproject.toml +0 -15
  39. {logics_manager-2.3.2 → logics_manager-2.3.3}/LICENSE +0 -0
  40. {logics_manager-2.3.2 → logics_manager-2.3.3}/logics_manager/__init__.py +0 -0
  41. {logics_manager-2.3.2 → logics_manager-2.3.3}/logics_manager/__main__.py +0 -0
  42. {logics_manager-2.3.2 → logics_manager-2.3.3}/logics_manager/assist.py +0 -0
  43. {logics_manager-2.3.2 → logics_manager-2.3.3}/logics_manager/assist_handoff.py +0 -0
  44. {logics_manager-2.3.2 → logics_manager-2.3.3}/logics_manager/assist_surface.py +0 -0
  45. {logics_manager-2.3.2 → logics_manager-2.3.3}/logics_manager/audit.py +0 -0
  46. {logics_manager-2.3.2 → logics_manager-2.3.3}/logics_manager/bootstrap.py +0 -0
  47. {logics_manager-2.3.2 → logics_manager-2.3.3}/logics_manager/cli.py +0 -0
  48. {logics_manager-2.3.2 → logics_manager-2.3.3}/logics_manager/cli_output.py +0 -0
  49. {logics_manager-2.3.2 → logics_manager-2.3.3}/logics_manager/config.py +0 -0
  50. {logics_manager-2.3.2 → logics_manager-2.3.3}/logics_manager/doctor.py +0 -0
  51. {logics_manager-2.3.2 → logics_manager-2.3.3}/logics_manager/flow.py +0 -0
  52. {logics_manager-2.3.2 → logics_manager-2.3.3}/logics_manager/flow_evidence.py +0 -0
  53. {logics_manager-2.3.2 → logics_manager-2.3.3}/logics_manager/index.py +0 -0
  54. {logics_manager-2.3.2 → logics_manager-2.3.3}/logics_manager/insights.py +0 -0
  55. {logics_manager-2.3.2 → logics_manager-2.3.3}/logics_manager/lint.py +0 -0
  56. {logics_manager-2.3.2 → logics_manager-2.3.3}/logics_manager/mcp.py +0 -0
  57. {logics_manager-2.3.2 → logics_manager-2.3.3}/logics_manager/path_utils.py +0 -0
  58. {logics_manager-2.3.2 → logics_manager-2.3.3}/logics_manager/sync.py +0 -0
  59. {logics_manager-2.3.2 → logics_manager-2.3.3}/logics_manager/termstyle.py +0 -0
  60. {logics_manager-2.3.2 → logics_manager-2.3.3}/logics_manager/update_check.py +0 -0
  61. {logics_manager-2.3.2 → logics_manager-2.3.3}/logics_manager.egg-info/dependency_links.txt +0 -0
  62. {logics_manager-2.3.2 → logics_manager-2.3.3}/logics_manager.egg-info/entry_points.txt +0 -0
  63. {logics_manager-2.3.2 → logics_manager-2.3.3}/logics_manager.egg-info/top_level.txt +0 -0
  64. {logics_manager-2.3.2 → logics_manager-2.3.3}/setup.cfg +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: logics-manager
3
- Version: 2.3.2
3
+ Version: 2.3.3
4
4
  Summary: Canonical Logics CLI
5
5
  Requires-Python: >=3.10
6
6
  License-File: LICENSE
@@ -2,7 +2,7 @@
2
2
 
3
3
  [![CI](https://github.com/AlexAgo83/logics-manager/actions/workflows/ci.yml/badge.svg)](https://github.com/AlexAgo83/logics-manager/actions/workflows/ci.yml)
4
4
  [![License](https://img.shields.io/github/license/AlexAgo83/logics-manager)](LICENSE)
5
- ![Version](https://img.shields.io/badge/version-v2.3.2-4C8BF5)
5
+ ![Version](https://img.shields.io/badge/version-v2.3.3-4C8BF5)
6
6
  ![VS Code](https://img.shields.io/badge/VS%20Code-1.86.0-007ACC?logo=visualstudiocode&logoColor=white)
7
7
  ![TypeScript](https://img.shields.io/badge/TypeScript-5.3.3-3178C6?logo=typescript&logoColor=white)
8
8
  ![Vitest](https://img.shields.io/badge/Vitest-2.1.8-6E9F18?logo=vitest&logoColor=white)
@@ -40,9 +40,15 @@ DOC_FAMILIES = (
40
40
 
41
41
  STAGE_ORDER = {family.stage: index for index, family in enumerate(DOC_FAMILIES)}
42
42
  REPO_ROOT = Path(__file__).resolve().parents[1]
43
+ PACKAGE_VIEWER_ASSETS_ROOT = Path(__file__).resolve().parent / "viewer_assets"
43
44
  VIEWER_ROOT = REPO_ROOT / "clients" / "viewer"
45
+ if not (VIEWER_ROOT / "index.html").is_file():
46
+ VIEWER_ROOT = PACKAGE_VIEWER_ASSETS_ROOT / "viewer"
44
47
  SHARED_MEDIA_ROOT = REPO_ROOT / "clients" / "shared-web" / "media"
48
+ if not SHARED_MEDIA_ROOT.is_dir():
49
+ SHARED_MEDIA_ROOT = PACKAGE_VIEWER_ASSETS_ROOT / "media"
45
50
  DIST_VENDOR_ROOT = REPO_ROOT / "dist" / "vendor"
51
+ PACKAGE_VENDOR_ROOT = PACKAGE_VIEWER_ASSETS_ROOT / "vendor"
46
52
  NODE_MERMAID_ROOT = REPO_ROOT / "node_modules" / "mermaid" / "dist"
47
53
 
48
54
 
@@ -435,6 +441,8 @@ class LogicsViewerRequestHandler(BaseHTTPRequestHandler):
435
441
  vendor_path = DIST_VENDOR_ROOT / "mermaid.min.js"
436
442
  if not vendor_path.is_file():
437
443
  vendor_path = NODE_MERMAID_ROOT / "mermaid.min.js"
444
+ if not vendor_path.is_file():
445
+ vendor_path = PACKAGE_VENDOR_ROOT / "mermaid.min.js"
438
446
  self._serve_file(vendor_path)
439
447
  return
440
448
  if route.startswith("/media/"):
@@ -0,0 +1,658 @@
1
+ .board {
2
+ --board-column-width: 260px;
3
+ flex: 1;
4
+ display: flex;
5
+ align-items: stretch;
6
+ gap: 12px;
7
+ padding: 12px 0;
8
+ overflow-x: auto;
9
+ overflow-y: hidden;
10
+ }
11
+
12
+ .board[hidden] {
13
+ display: none !important;
14
+ }
15
+
16
+ .board--list {
17
+ display: block;
18
+ padding: 8px 0;
19
+ overflow-x: hidden;
20
+ overflow-y: auto;
21
+ }
22
+
23
+ .column {
24
+ flex: 0 0 var(--board-column-width);
25
+ width: var(--board-column-width);
26
+ min-width: var(--board-column-width);
27
+ max-width: var(--board-column-width);
28
+ min-inline-size: 0;
29
+ background: var(--vscode-sideBar-background, #252526);
30
+ border: 1px solid var(--vscode-panel-border, #333333);
31
+ border-radius: 8px;
32
+ display: flex;
33
+ flex-direction: column;
34
+ height: 100%;
35
+ }
36
+
37
+ .column__header {
38
+ display: flex;
39
+ align-items: center;
40
+ justify-content: space-between;
41
+ gap: 8px;
42
+ padding: 10px 10px 6px 12px;
43
+ min-width: 0;
44
+ }
45
+
46
+ .column__title {
47
+ display: flex;
48
+ align-items: baseline;
49
+ gap: 6px;
50
+ font-size: 12px;
51
+ text-transform: uppercase;
52
+ letter-spacing: 0.06em;
53
+ color: var(--vscode-descriptionForeground, #9da5b4);
54
+ min-width: 0;
55
+ }
56
+
57
+ .column__title-label {
58
+ min-width: 0;
59
+ }
60
+
61
+ .column__title-count {
62
+ flex: none;
63
+ font-size: 11px;
64
+ letter-spacing: 0;
65
+ text-transform: none;
66
+ color: var(--vscode-descriptionForeground, #9da5b4);
67
+ }
68
+
69
+ .column__actions {
70
+ display: flex;
71
+ align-items: center;
72
+ gap: 6px;
73
+ position: relative;
74
+ }
75
+
76
+ .column__add {
77
+ width: 22px;
78
+ height: 22px;
79
+ border: 1px solid var(--vscode-panel-border, #333333);
80
+ border-radius: 4px;
81
+ background: transparent;
82
+ cursor: pointer;
83
+ color: var(--vscode-foreground, #d4d4d4);
84
+ display: flex;
85
+ align-items: center;
86
+ justify-content: center;
87
+ padding: 0;
88
+ line-height: 0;
89
+ }
90
+
91
+ .column__add svg {
92
+ width: 14px;
93
+ height: 14px;
94
+ display: block;
95
+ }
96
+
97
+ .column__menu {
98
+ position: absolute;
99
+ top: 28px;
100
+ right: 0;
101
+ min-width: 170px;
102
+ background: var(--vscode-editorWidget-background, #202020);
103
+ border: 1px solid var(--vscode-panel-border, #333333);
104
+ border-radius: 6px;
105
+ padding: 4px;
106
+ display: flex;
107
+ flex-direction: column;
108
+ gap: 2px;
109
+ z-index: 10;
110
+ box-shadow: 0 8px 20px rgba(0, 0, 0, 0.35);
111
+ }
112
+
113
+ .column__menu-item {
114
+ text-align: left;
115
+ background: transparent;
116
+ border: none;
117
+ color: var(--vscode-foreground, #d4d4d4);
118
+ font-size: 12px;
119
+ padding: 6px 8px;
120
+ border-radius: 4px;
121
+ cursor: pointer;
122
+ }
123
+
124
+ .column__menu-item:hover {
125
+ background: var(--vscode-list-hoverBackground, #2a2d2e);
126
+ }
127
+
128
+ .column__body {
129
+ flex: 1;
130
+ overflow: auto;
131
+ padding-bottom: 8px;
132
+ min-width: 0;
133
+ }
134
+
135
+ .column__empty {
136
+ padding: 12px;
137
+ font-size: 12px;
138
+ color: var(--vscode-descriptionForeground, #9da5b4);
139
+ }
140
+
141
+ .group-show-more {
142
+ display: flex;
143
+ align-items: center;
144
+ justify-content: center;
145
+ min-height: 30px;
146
+ width: calc(100% - 20px);
147
+ margin: 6px 10px;
148
+ border: 1px dashed var(--vscode-panel-border, #333333);
149
+ border-radius: 6px;
150
+ background: transparent;
151
+ color: var(--vscode-textLink-foreground, #4ea1ff);
152
+ font-size: 12px;
153
+ font-weight: 600;
154
+ cursor: pointer;
155
+ }
156
+
157
+ .group-show-more:hover {
158
+ background: var(--vscode-list-hoverBackground, #2a2d2e);
159
+ }
160
+
161
+ .group-show-more:focus-visible {
162
+ outline: 1px solid var(--vscode-focusBorder, var(--vscode-button-background, #0e639c));
163
+ outline-offset: 1px;
164
+ }
165
+
166
+ .card {
167
+ margin: 6px 10px;
168
+ padding: 8px 10px;
169
+ background: var(--vscode-editorWidget-background, #202020);
170
+ border: 1px solid var(--vscode-panel-border, #333333);
171
+ border-radius: 6px;
172
+ cursor: pointer;
173
+ display: flex;
174
+ flex-direction: column;
175
+ gap: 4px;
176
+ min-width: 0;
177
+ position: relative;
178
+ overflow: hidden;
179
+ }
180
+
181
+ .card--preview-open {
182
+ border-color: var(--vscode-focusBorder, var(--vscode-button-background, #0e639c));
183
+ }
184
+
185
+ .card--progress-bar {
186
+ position: relative;
187
+ overflow: hidden;
188
+ }
189
+
190
+ .card--progress-bar::before {
191
+ content: "";
192
+ position: absolute;
193
+ inset: 0;
194
+ background: linear-gradient(
195
+ 90deg,
196
+ rgba(249, 115, 22, 0.38) 0%,
197
+ rgba(249, 115, 22, 0.38) var(--progress, 0%),
198
+ rgba(0, 0, 0, 0) var(--progress, 0%)
199
+ );
200
+ pointer-events: none;
201
+ }
202
+
203
+ .card--progress-bar > * {
204
+ position: relative;
205
+ z-index: 1;
206
+ }
207
+
208
+ .card__title {
209
+ display: flex;
210
+ align-items: baseline;
211
+ gap: 6px;
212
+ font-size: 13px;
213
+ color: var(--vscode-foreground, #d4d4d4);
214
+ min-width: 0;
215
+ overflow-wrap: anywhere;
216
+ word-break: break-word;
217
+ }
218
+
219
+ .card__title-prefix {
220
+ flex: none;
221
+ color: var(--vscode-descriptionForeground, #9da5b4);
222
+ font-size: 10px;
223
+ font-weight: 700;
224
+ letter-spacing: 0.08em;
225
+ text-transform: uppercase;
226
+ }
227
+
228
+ .card__title-text {
229
+ min-width: 0;
230
+ }
231
+
232
+ .card__meta {
233
+ font-size: 11px;
234
+ color: var(--vscode-descriptionForeground, #9da5b4);
235
+ min-width: 0;
236
+ overflow-wrap: anywhere;
237
+ word-break: break-word;
238
+ }
239
+
240
+ .card__meta--linkage {
241
+ color: var(--vscode-textLink-foreground, #4ea1ff);
242
+ }
243
+
244
+ .card__meta--linkage.card__meta--orphan {
245
+ font-style: italic;
246
+ }
247
+
248
+ .card__badges {
249
+ display: flex;
250
+ flex-wrap: nowrap;
251
+ gap: 6px;
252
+ min-width: 0;
253
+ max-width: 100%;
254
+ overflow-x: auto;
255
+ overflow-y: hidden;
256
+ scrollbar-width: none;
257
+ -ms-overflow-style: none;
258
+ }
259
+
260
+ .card__badges::-webkit-scrollbar {
261
+ display: none;
262
+ }
263
+
264
+ .card__badges > * {
265
+ flex: 0 0 auto;
266
+ }
267
+
268
+ .card__badges--strip {
269
+ align-items: center;
270
+ }
271
+
272
+ .card__badges--strip > .card__badges,
273
+ .card__badges--strip > .card__linkage-indicators {
274
+ margin-top: 0;
275
+ }
276
+
277
+ .card__badges--strip > .card__badges {
278
+ max-width: none;
279
+ overflow: visible;
280
+ }
281
+
282
+ .card__badges--suggested {
283
+ margin-top: 2px;
284
+ }
285
+
286
+ .card__badges--health {
287
+ margin-top: 2px;
288
+ }
289
+
290
+ .card__badges--metrics {
291
+ margin-top: 2px;
292
+ }
293
+
294
+ .card__preview {
295
+ margin-top: 4px;
296
+ padding-top: 6px;
297
+ border-top: 1px solid rgba(255, 255, 255, 0.08);
298
+ display: flex;
299
+ flex-direction: column;
300
+ gap: 4px;
301
+ }
302
+
303
+ .card__preview-header {
304
+ display: flex;
305
+ flex-direction: column;
306
+ gap: 2px;
307
+ padding-bottom: 4px;
308
+ margin-bottom: 2px;
309
+ border-bottom: 1px solid rgba(255, 255, 255, 0.08);
310
+ }
311
+
312
+ .card__preview-title {
313
+ font-size: 13px;
314
+ font-weight: 600;
315
+ color: var(--vscode-foreground, #d4d4d4);
316
+ overflow-wrap: anywhere;
317
+ word-break: break-word;
318
+ }
319
+
320
+ .card__preview-file {
321
+ font-size: 11px;
322
+ color: var(--vscode-descriptionForeground, #9da5b4);
323
+ overflow-wrap: anywhere;
324
+ word-break: break-word;
325
+ }
326
+
327
+ .card__preview-row {
328
+ display: flex;
329
+ justify-content: space-between;
330
+ gap: 8px;
331
+ font-size: 11px;
332
+ }
333
+
334
+ .card__preview-label {
335
+ color: var(--vscode-descriptionForeground, #9da5b4);
336
+ }
337
+
338
+ .card__preview-value {
339
+ color: var(--vscode-foreground, #d4d4d4);
340
+ text-align: right;
341
+ overflow-wrap: anywhere;
342
+ }
343
+
344
+ .card__badge {
345
+ display: inline-flex;
346
+ align-items: center;
347
+ min-height: 18px;
348
+ padding: 1px 6px;
349
+ border-radius: 999px;
350
+ font-size: 10px;
351
+ font-weight: 700;
352
+ letter-spacing: 0.04em;
353
+ text-transform: uppercase;
354
+ border: 1px solid transparent;
355
+ white-space: nowrap;
356
+ }
357
+
358
+ .card__badge--metric {
359
+ color: var(--vscode-descriptionForeground, #9da5b4);
360
+ background: rgba(255, 255, 255, 0.06);
361
+ border-color: rgba(255, 255, 255, 0.1);
362
+ letter-spacing: 0.02em;
363
+ text-transform: none;
364
+ font-weight: 600;
365
+ gap: 4px;
366
+ padding-inline: 8px;
367
+ align-items: center;
368
+ }
369
+
370
+ .card__badge-metric-segment {
371
+ display: inline-flex;
372
+ align-items: baseline;
373
+ gap: 4px;
374
+ min-width: 0;
375
+ }
376
+
377
+ .card__badge-metric-prefix {
378
+ color: var(--vscode-descriptionForeground, #9da5b4);
379
+ font-size: 9px;
380
+ font-weight: 700;
381
+ letter-spacing: 0.08em;
382
+ text-transform: uppercase;
383
+ opacity: 0.75;
384
+ }
385
+
386
+ .card__badge-metric-value {
387
+ color: var(--vscode-foreground, #d4d4d4);
388
+ }
389
+
390
+ .card__badge-metric-value--complexity {
391
+ color: var(--vscode-descriptionForeground, #9da5b4);
392
+ }
393
+
394
+ .card__badge-metric-separator {
395
+ color: var(--vscode-descriptionForeground, #9da5b4);
396
+ font-size: 9px;
397
+ line-height: 1;
398
+ margin: 0 2px;
399
+ }
400
+
401
+ .card__badge--product {
402
+ color: #fef3c7;
403
+ background: rgba(217, 119, 6, 0.22);
404
+ border-color: rgba(245, 158, 11, 0.4);
405
+ }
406
+
407
+ .card__badge--architecture {
408
+ color: #dbeafe;
409
+ background: rgba(37, 99, 235, 0.22);
410
+ border-color: rgba(59, 130, 246, 0.42);
411
+ }
412
+
413
+ .card__badge--spec {
414
+ color: #dcfce7;
415
+ background: rgba(22, 163, 74, 0.22);
416
+ border-color: rgba(34, 197, 94, 0.4);
417
+ }
418
+
419
+ .card__badge--suggested {
420
+ color: #d1fae5;
421
+ background: rgba(13, 148, 136, 0.2);
422
+ border-color: rgba(20, 184, 166, 0.38);
423
+ }
424
+
425
+ .card__badge--health {
426
+ color: #fee2e2;
427
+ }
428
+
429
+ .card__badge--health-blocked {
430
+ background: rgba(220, 38, 38, 0.2);
431
+ border-color: rgba(248, 113, 113, 0.4);
432
+ }
433
+
434
+ .card__badge--health-orphaned {
435
+ background: rgba(245, 158, 11, 0.2);
436
+ border-color: rgba(251, 191, 36, 0.4);
437
+ }
438
+
439
+ .card__badge--health-done-mismatch,
440
+ .card__badge--health-workflow-inconsistent {
441
+ background: rgba(249, 115, 22, 0.2);
442
+ border-color: rgba(251, 146, 60, 0.42);
443
+ }
444
+
445
+ .card__badge--health-missing-supporting-doc {
446
+ background: rgba(14, 116, 144, 0.2);
447
+ border-color: rgba(34, 211, 238, 0.35);
448
+ }
449
+
450
+ .card__linkage-indicators {
451
+ position: absolute;
452
+ top: 6px;
453
+ right: 6px;
454
+ display: flex;
455
+ align-items: center;
456
+ gap: 3px;
457
+ pointer-events: none;
458
+ z-index: 2;
459
+ }
460
+
461
+ .card__task-dot-container {
462
+ display: flex;
463
+ align-items: center;
464
+ gap: 3px;
465
+ }
466
+
467
+ .card__request-badge {
468
+ width: 8px;
469
+ height: 8px;
470
+ border-radius: 2px;
471
+ opacity: 0.95;
472
+ border: 1px solid rgba(255, 255, 255, 0.25);
473
+ box-shadow: 0 0 0 1px rgba(15, 23, 42, 0.16) inset;
474
+ flex: none;
475
+ }
476
+
477
+ .card__task-dot {
478
+ width: 8px;
479
+ height: 8px;
480
+ border-radius: 50%;
481
+ opacity: 0.9;
482
+ border: 1px solid rgba(255, 255, 255, 0.2);
483
+ flex: none;
484
+ }
485
+
486
+ .card__task-dot-overflow {
487
+ font-size: 9px;
488
+ line-height: 1;
489
+ color: var(--vscode-descriptionForeground, #9da5b4);
490
+ align-self: center;
491
+ }
492
+
493
+ .card--selected {
494
+ border-color: var(--vscode-button-background, #0e639c);
495
+ box-shadow: 0 0 0 1px var(--vscode-button-background, #0e639c);
496
+ }
497
+
498
+ .card--health-alert {
499
+ border-color: rgba(248, 113, 113, 0.5);
500
+ box-shadow: 0 0 0 1px rgba(248, 113, 113, 0.2);
501
+ }
502
+
503
+ .card:focus-visible,
504
+ .list-view__header:focus-visible {
505
+ outline: 2px solid var(--vscode-focusBorder, var(--vscode-button-background, #0e639c));
506
+ outline-offset: 2px;
507
+ }
508
+
509
+ .card--done {
510
+ opacity: 0.55;
511
+ }
512
+
513
+ .card--progress-zero {
514
+ background: rgba(59, 130, 246, 0.16);
515
+ }
516
+
517
+ .card--progress-active {
518
+ background: rgba(249, 115, 22, 0.16);
519
+ }
520
+
521
+ .card--progress-done {
522
+ background: rgba(34, 197, 94, 0.18);
523
+ }
524
+
525
+ .card--used {
526
+ background: rgba(234, 179, 8, 0.18);
527
+ }
528
+
529
+ .state-message {
530
+ padding: 16px;
531
+ font-size: 12px;
532
+ color: var(--vscode-descriptionForeground, #9da5b4);
533
+ }
534
+
535
+ .list-view {
536
+ display: grid;
537
+ gap: 12px;
538
+ width: 100%;
539
+ }
540
+
541
+ .list-view__wrapper {
542
+ position: relative;
543
+ width: 100%;
544
+ min-height: 100%;
545
+ }
546
+
547
+ .list-view__sentinel {
548
+ position: absolute;
549
+ left: 0;
550
+ right: 0;
551
+ z-index: 10;
552
+ display: flex;
553
+ align-items: center;
554
+ gap: 6px;
555
+ padding: 0 12px 6px;
556
+ font-size: 12px;
557
+ text-transform: uppercase;
558
+ letter-spacing: 0.06em;
559
+ color: var(--vscode-descriptionForeground, #9da5b4);
560
+ background: var(--vscode-sideBar-background, #252526);
561
+ pointer-events: none;
562
+ }
563
+
564
+ .list-view__sentinel--top {
565
+ top: 0;
566
+ border-bottom: 1px solid var(--vscode-panel-border, #333333);
567
+ }
568
+
569
+ .list-view__sentinel--bottom {
570
+ bottom: 0;
571
+ border-top: 1px solid var(--vscode-panel-border, #333333);
572
+ }
573
+
574
+ .list-view__sentinel[hidden] {
575
+ display: none !important;
576
+ }
577
+
578
+ .list-view__sentinel-icon {
579
+ flex: none;
580
+ }
581
+
582
+ .list-view__sentinel-label {
583
+ min-width: 0;
584
+ }
585
+
586
+ .list-view__sentinel-count {
587
+ flex: none;
588
+ margin-left: auto;
589
+ }
590
+
591
+ .list-view__section {
592
+ border-top: 1px solid var(--vscode-panel-border, #333333);
593
+ padding-top: 8px;
594
+ }
595
+
596
+ .list-view__header {
597
+ width: 100%;
598
+ border: none;
599
+ background: transparent;
600
+ display: flex;
601
+ align-items: center;
602
+ gap: 6px;
603
+ text-align: left;
604
+ font-size: 12px;
605
+ text-transform: uppercase;
606
+ letter-spacing: 0.06em;
607
+ color: var(--vscode-descriptionForeground, #9da5b4);
608
+ padding: 0 12px 6px;
609
+ cursor: pointer;
610
+ }
611
+
612
+ .list-view__header-label {
613
+ min-width: 0;
614
+ }
615
+
616
+ .list-view__header-count {
617
+ display: inline-flex;
618
+ align-items: center;
619
+ justify-content: center;
620
+ margin-left: auto;
621
+ flex: none;
622
+ min-height: 18px;
623
+ padding: 0 6px;
624
+ border-radius: 999px;
625
+ border: 1px solid rgba(157, 165, 180, 0.28);
626
+ background: rgba(157, 165, 180, 0.08);
627
+ font-size: 11px;
628
+ font-weight: 600;
629
+ letter-spacing: 0;
630
+ text-transform: none;
631
+ color: var(--vscode-descriptionForeground, #9da5b4);
632
+ }
633
+
634
+ .list-view__header-icon {
635
+ display: inline-flex;
636
+ width: 10px;
637
+ justify-content: center;
638
+ }
639
+
640
+ .list-view__body {
641
+ display: grid;
642
+ gap: 4px;
643
+ }
644
+
645
+ .list-view__body[hidden] {
646
+ display: none;
647
+ }
648
+
649
+ .list-view__empty {
650
+ padding: 0 12px 8px;
651
+ font-size: 12px;
652
+ color: var(--vscode-descriptionForeground, #9da5b4);
653
+ }
654
+
655
+ .card--compact {
656
+ margin: 2px 10px;
657
+ padding: 6px 8px;
658
+ }