claude-code-workflow 6.3.9 → 6.3.11

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 (91) hide show
  1. package/.claude/CLAUDE.md +1 -1
  2. package/.claude/agents/issue-plan-agent.md +21 -15
  3. package/.claude/agents/issue-queue-agent.md +114 -87
  4. package/.claude/commands/issue/discover.md +427 -0
  5. package/.claude/commands/issue/execute.md +195 -363
  6. package/.claude/commands/issue/new.md +13 -1
  7. package/.claude/commands/issue/plan.md +55 -32
  8. package/.claude/commands/issue/queue.md +145 -71
  9. package/.claude/commands/workflow/init.md +75 -29
  10. package/.claude/commands/workflow/lite-fix.md +8 -0
  11. package/.claude/commands/workflow/lite-plan.md +8 -0
  12. package/.claude/commands/workflow/review-module-cycle.md +4 -0
  13. package/.claude/commands/workflow/review-session-cycle.md +4 -0
  14. package/.claude/commands/workflow/review.md +4 -4
  15. package/.claude/commands/workflow/session/solidify.md +299 -0
  16. package/.claude/commands/workflow/session/start.md +10 -7
  17. package/.claude/commands/workflow/tools/context-gather.md +17 -10
  18. package/.claude/skills/software-manual/SKILL.md +184 -0
  19. package/.claude/skills/software-manual/phases/01-requirements-discovery.md +162 -0
  20. package/.claude/skills/software-manual/phases/02-project-exploration.md +101 -0
  21. package/.claude/skills/software-manual/phases/02.5-api-extraction.md +161 -0
  22. package/.claude/skills/software-manual/phases/03-parallel-analysis.md +183 -0
  23. package/.claude/skills/software-manual/phases/03.5-consolidation.md +82 -0
  24. package/.claude/skills/software-manual/phases/04-screenshot-capture.md +89 -0
  25. package/.claude/skills/software-manual/phases/05-html-assembly.md +132 -0
  26. package/.claude/skills/software-manual/phases/06-iterative-refinement.md +259 -0
  27. package/.claude/skills/software-manual/scripts/api-extractor.md +245 -0
  28. package/.claude/skills/software-manual/scripts/bundle-libraries.md +85 -0
  29. package/.claude/skills/software-manual/scripts/extract_apis.py +270 -0
  30. package/.claude/skills/software-manual/scripts/screenshot-helper.md +447 -0
  31. package/.claude/skills/software-manual/scripts/swagger-runner.md +419 -0
  32. package/.claude/skills/software-manual/scripts/typedoc-runner.md +357 -0
  33. package/.claude/skills/software-manual/specs/html-template.md +325 -0
  34. package/.claude/skills/software-manual/specs/quality-standards.md +253 -0
  35. package/.claude/skills/software-manual/specs/writing-style.md +298 -0
  36. package/.claude/skills/software-manual/templates/css/wiki-base.css +788 -0
  37. package/.claude/skills/software-manual/templates/css/wiki-dark.css +278 -0
  38. package/.claude/skills/software-manual/templates/tiddlywiki-shell.html +327 -0
  39. package/.claude/workflows/cli-templates/schemas/discovery-finding-schema.json +219 -0
  40. package/.claude/workflows/cli-templates/schemas/discovery-state-schema.json +125 -0
  41. package/.claude/workflows/cli-templates/schemas/issues-jsonl-schema.json +168 -74
  42. package/.claude/workflows/cli-templates/schemas/queue-schema.json +225 -108
  43. package/.claude/workflows/cli-templates/schemas/solution-schema.json +6 -28
  44. package/.claude/workflows/context-tools.md +17 -25
  45. package/.codex/AGENTS.md +10 -5
  46. package/.codex/prompts/issue-execute.md +174 -84
  47. package/.codex/prompts/issue-plan.md +106 -0
  48. package/.codex/prompts/issue-queue.md +225 -0
  49. package/ccw/dist/cli.d.ts.map +1 -1
  50. package/ccw/dist/cli.js +1 -0
  51. package/ccw/dist/cli.js.map +1 -1
  52. package/ccw/dist/commands/issue.d.ts.map +1 -1
  53. package/ccw/dist/commands/issue.js +443 -123
  54. package/ccw/dist/commands/issue.js.map +1 -1
  55. package/ccw/dist/core/dashboard-generator.d.ts.map +1 -1
  56. package/ccw/dist/core/dashboard-generator.js +4 -1
  57. package/ccw/dist/core/dashboard-generator.js.map +1 -1
  58. package/ccw/dist/core/data-aggregator.d.ts +32 -0
  59. package/ccw/dist/core/data-aggregator.d.ts.map +1 -1
  60. package/ccw/dist/core/data-aggregator.js +55 -11
  61. package/ccw/dist/core/data-aggregator.js.map +1 -1
  62. package/ccw/dist/core/routes/discovery-routes.d.ts +37 -0
  63. package/ccw/dist/core/routes/discovery-routes.d.ts.map +1 -0
  64. package/ccw/dist/core/routes/discovery-routes.js +514 -0
  65. package/ccw/dist/core/routes/discovery-routes.js.map +1 -0
  66. package/ccw/dist/core/server.d.ts.map +1 -1
  67. package/ccw/dist/core/server.js +9 -1
  68. package/ccw/dist/core/server.js.map +1 -1
  69. package/ccw/dist/tools/codex-lens.d.ts +12 -1
  70. package/ccw/dist/tools/codex-lens.d.ts.map +1 -1
  71. package/ccw/dist/tools/codex-lens.js +56 -7
  72. package/ccw/dist/tools/codex-lens.js.map +1 -1
  73. package/ccw/src/cli.ts +1 -0
  74. package/ccw/src/commands/issue.ts +498 -158
  75. package/ccw/src/core/dashboard-generator.ts +4 -1
  76. package/ccw/src/core/data-aggregator.ts +94 -11
  77. package/ccw/src/core/routes/discovery-routes.ts +607 -0
  78. package/ccw/src/core/server.ts +9 -1
  79. package/ccw/src/templates/dashboard-css/34-discovery.css +783 -0
  80. package/ccw/src/templates/dashboard-js/components/cli-status.js +1 -78
  81. package/ccw/src/templates/dashboard-js/components/navigation.js +8 -0
  82. package/ccw/src/templates/dashboard-js/i18n.js +140 -4
  83. package/ccw/src/templates/dashboard-js/views/cli-manager.js +0 -18
  84. package/ccw/src/templates/dashboard-js/views/codexlens-manager.js +13 -3
  85. package/ccw/src/templates/dashboard-js/views/issue-discovery.js +730 -0
  86. package/ccw/src/templates/dashboard-js/views/issue-manager.js +57 -26
  87. package/ccw/src/templates/dashboard-js/views/project-overview.js +153 -0
  88. package/ccw/src/templates/dashboard.html +5 -0
  89. package/ccw/src/tools/codex-lens.ts +75 -9
  90. package/package.json +1 -1
  91. package/.claude/workflows/context-tools-ace.md +0 -105
@@ -0,0 +1,783 @@
1
+ /* ==========================================
2
+ ISSUE DISCOVERY STYLES
3
+ ========================================== */
4
+
5
+ /* Discovery Manager Container */
6
+ .discovery-manager {
7
+ width: 100%;
8
+ }
9
+
10
+ .discovery-manager.loading {
11
+ display: flex;
12
+ flex-direction: column;
13
+ align-items: center;
14
+ justify-content: center;
15
+ min-height: 300px;
16
+ color: hsl(var(--muted-foreground));
17
+ }
18
+
19
+ /* Discovery Header */
20
+ .discovery-header {
21
+ margin-bottom: 1.5rem;
22
+ }
23
+
24
+ .discovery-back-btn {
25
+ display: inline-flex;
26
+ align-items: center;
27
+ gap: 0.5rem;
28
+ padding: 0.5rem 1rem;
29
+ border-radius: 0.5rem;
30
+ font-size: 0.875rem;
31
+ font-weight: 500;
32
+ color: hsl(var(--muted-foreground));
33
+ background: hsl(var(--muted));
34
+ border: none;
35
+ cursor: pointer;
36
+ transition: all 0.15s ease;
37
+ }
38
+
39
+ .discovery-back-btn:hover {
40
+ color: hsl(var(--foreground));
41
+ background: hsl(var(--hover));
42
+ }
43
+
44
+ /* Discovery List */
45
+ .discovery-list-container {
46
+ display: grid;
47
+ grid-template-columns: repeat(auto-fill, minmax(360px, 1fr));
48
+ gap: 1rem;
49
+ }
50
+
51
+ /* Discovery Card */
52
+ .discovery-card {
53
+ background: hsl(var(--card));
54
+ border: 1px solid hsl(var(--border));
55
+ border-radius: 0.75rem;
56
+ padding: 1rem;
57
+ cursor: pointer;
58
+ transition: all 0.15s ease;
59
+ }
60
+
61
+ .discovery-card:hover {
62
+ border-color: hsl(var(--primary) / 0.5);
63
+ box-shadow: 0 4px 12px hsl(var(--foreground) / 0.05);
64
+ }
65
+
66
+ .discovery-card.running {
67
+ border-color: hsl(var(--warning) / 0.5);
68
+ }
69
+
70
+ .discovery-card-header {
71
+ display: flex;
72
+ align-items: center;
73
+ justify-content: space-between;
74
+ margin-bottom: 0.75rem;
75
+ }
76
+
77
+ .discovery-id {
78
+ display: flex;
79
+ align-items: center;
80
+ gap: 0.5rem;
81
+ font-size: 0.875rem;
82
+ font-weight: 600;
83
+ color: hsl(var(--foreground));
84
+ }
85
+
86
+ .discovery-phase {
87
+ padding: 0.25rem 0.5rem;
88
+ border-radius: 9999px;
89
+ font-size: 0.75rem;
90
+ font-weight: 500;
91
+ text-transform: capitalize;
92
+ }
93
+
94
+ .discovery-phase.complete {
95
+ background: hsl(var(--success) / 0.1);
96
+ color: hsl(var(--success));
97
+ }
98
+
99
+ .discovery-phase.parallel,
100
+ .discovery-phase.external,
101
+ .discovery-phase.aggregation {
102
+ background: hsl(var(--warning) / 0.1);
103
+ color: hsl(var(--warning));
104
+ }
105
+
106
+ .discovery-phase.initialization {
107
+ background: hsl(var(--primary) / 0.1);
108
+ color: hsl(var(--primary));
109
+ }
110
+
111
+ .discovery-card-body {
112
+ display: flex;
113
+ flex-direction: column;
114
+ gap: 0.75rem;
115
+ }
116
+
117
+ .discovery-target {
118
+ display: flex;
119
+ align-items: center;
120
+ gap: 0.5rem;
121
+ font-size: 0.875rem;
122
+ }
123
+
124
+ /* Perspective Badges */
125
+ .discovery-perspectives {
126
+ display: flex;
127
+ flex-wrap: wrap;
128
+ gap: 0.375rem;
129
+ }
130
+
131
+ .perspective-badge {
132
+ padding: 0.125rem 0.5rem;
133
+ border-radius: 9999px;
134
+ font-size: 0.625rem;
135
+ font-weight: 600;
136
+ text-transform: uppercase;
137
+ letter-spacing: 0.025em;
138
+ }
139
+
140
+ .perspective-badge.bug {
141
+ background: hsl(0 84% 60% / 0.1);
142
+ color: hsl(0 84% 60%);
143
+ }
144
+
145
+ .perspective-badge.ux {
146
+ background: hsl(262 84% 60% / 0.1);
147
+ color: hsl(262 84% 60%);
148
+ }
149
+
150
+ .perspective-badge.test {
151
+ background: hsl(200 84% 50% / 0.1);
152
+ color: hsl(200 84% 50%);
153
+ }
154
+
155
+ .perspective-badge.quality {
156
+ background: hsl(142 76% 36% / 0.1);
157
+ color: hsl(142 76% 36%);
158
+ }
159
+
160
+ .perspective-badge.security {
161
+ background: hsl(0 84% 50% / 0.1);
162
+ color: hsl(0 84% 50%);
163
+ }
164
+
165
+ .perspective-badge.performance {
166
+ background: hsl(38 92% 50% / 0.1);
167
+ color: hsl(38 92% 50%);
168
+ }
169
+
170
+ .perspective-badge.maintainability {
171
+ background: hsl(280 60% 50% / 0.1);
172
+ color: hsl(280 60% 50%);
173
+ }
174
+
175
+ .perspective-badge.best-practices {
176
+ background: hsl(170 60% 45% / 0.1);
177
+ color: hsl(170 60% 45%);
178
+ }
179
+
180
+ .perspective-badge.more {
181
+ background: hsl(var(--muted));
182
+ color: hsl(var(--muted-foreground));
183
+ }
184
+
185
+ /* Progress Bar */
186
+ .discovery-progress-bar {
187
+ height: 4px;
188
+ background: hsl(var(--muted));
189
+ border-radius: 2px;
190
+ overflow: hidden;
191
+ }
192
+
193
+ .discovery-progress-bar .progress-fill {
194
+ height: 100%;
195
+ background: hsl(var(--primary));
196
+ transition: width 0.3s ease;
197
+ }
198
+
199
+ /* Stats */
200
+ .discovery-stats {
201
+ display: flex;
202
+ gap: 1.5rem;
203
+ }
204
+
205
+ .discovery-stats .stat {
206
+ display: flex;
207
+ flex-direction: column;
208
+ }
209
+
210
+ .discovery-stats .stat-value {
211
+ font-size: 1.25rem;
212
+ font-weight: 700;
213
+ color: hsl(var(--foreground));
214
+ }
215
+
216
+ .discovery-stats .stat-label {
217
+ font-size: 0.75rem;
218
+ color: hsl(var(--muted-foreground));
219
+ }
220
+
221
+ /* Priority Distribution Bar */
222
+ .discovery-priority-bar {
223
+ display: flex;
224
+ height: 4px;
225
+ border-radius: 2px;
226
+ overflow: hidden;
227
+ }
228
+
229
+ .discovery-priority-bar .priority-segment {
230
+ height: 100%;
231
+ }
232
+
233
+ .discovery-priority-bar .priority-segment.critical {
234
+ background: hsl(0 84% 60%);
235
+ }
236
+
237
+ .discovery-priority-bar .priority-segment.high {
238
+ background: hsl(38 92% 50%);
239
+ }
240
+
241
+ .discovery-priority-bar .priority-segment.medium {
242
+ background: hsl(48 96% 53%);
243
+ }
244
+
245
+ .discovery-priority-bar .priority-segment.low {
246
+ background: hsl(142 76% 36%);
247
+ }
248
+
249
+ .discovery-card-footer {
250
+ display: flex;
251
+ justify-content: flex-end;
252
+ margin-top: 0.75rem;
253
+ padding-top: 0.75rem;
254
+ border-top: 1px solid hsl(var(--border));
255
+ }
256
+
257
+ .discovery-action-btn {
258
+ padding: 0.375rem;
259
+ border-radius: 0.375rem;
260
+ color: hsl(var(--muted-foreground));
261
+ background: transparent;
262
+ border: none;
263
+ cursor: pointer;
264
+ transition: all 0.15s ease;
265
+ }
266
+
267
+ .discovery-action-btn:hover {
268
+ color: hsl(var(--destructive));
269
+ background: hsl(var(--destructive) / 0.1);
270
+ }
271
+
272
+ /* Empty State */
273
+ .discovery-empty {
274
+ display: flex;
275
+ flex-direction: column;
276
+ align-items: center;
277
+ justify-content: center;
278
+ min-height: 300px;
279
+ text-align: center;
280
+ color: hsl(var(--muted-foreground));
281
+ }
282
+
283
+ .discovery-empty .empty-icon {
284
+ margin-bottom: 1rem;
285
+ opacity: 0.5;
286
+ }
287
+
288
+ /* Discovery Detail Container */
289
+ .discovery-detail-container {
290
+ display: grid;
291
+ grid-template-columns: 1fr 400px;
292
+ gap: 1.5rem;
293
+ height: calc(100vh - 200px);
294
+ min-height: 500px;
295
+ }
296
+
297
+ @media (max-width: 1024px) {
298
+ .discovery-detail-container {
299
+ grid-template-columns: 1fr;
300
+ height: auto;
301
+ }
302
+ }
303
+
304
+ /* Findings Panel */
305
+ .discovery-findings-panel {
306
+ display: flex;
307
+ flex-direction: column;
308
+ background: hsl(var(--card));
309
+ border: 1px solid hsl(var(--border));
310
+ border-radius: 0.75rem;
311
+ overflow: hidden;
312
+ }
313
+
314
+ .discovery-toolbar {
315
+ display: flex;
316
+ align-items: center;
317
+ justify-content: space-between;
318
+ gap: 1rem;
319
+ padding: 0.75rem 1rem;
320
+ border-bottom: 1px solid hsl(var(--border));
321
+ flex-wrap: wrap;
322
+ }
323
+
324
+ .toolbar-filters {
325
+ display: flex;
326
+ gap: 0.5rem;
327
+ }
328
+
329
+ .filter-select {
330
+ padding: 0.375rem 0.75rem;
331
+ border-radius: 0.375rem;
332
+ font-size: 0.75rem;
333
+ color: hsl(var(--foreground));
334
+ background: hsl(var(--muted));
335
+ border: 1px solid hsl(var(--border));
336
+ cursor: pointer;
337
+ }
338
+
339
+ .toolbar-search {
340
+ display: flex;
341
+ align-items: center;
342
+ gap: 0.5rem;
343
+ padding: 0.375rem 0.75rem;
344
+ border-radius: 0.375rem;
345
+ background: hsl(var(--muted));
346
+ border: 1px solid hsl(var(--border));
347
+ flex: 1;
348
+ max-width: 250px;
349
+ }
350
+
351
+ .toolbar-search input {
352
+ flex: 1;
353
+ background: transparent;
354
+ border: none;
355
+ font-size: 0.75rem;
356
+ color: hsl(var(--foreground));
357
+ outline: none;
358
+ }
359
+
360
+ .findings-count {
361
+ display: flex;
362
+ align-items: center;
363
+ justify-content: space-between;
364
+ padding: 0.5rem 1rem;
365
+ font-size: 0.75rem;
366
+ color: hsl(var(--muted-foreground));
367
+ border-bottom: 1px solid hsl(var(--border));
368
+ }
369
+
370
+ .findings-count-left {
371
+ display: flex;
372
+ align-items: center;
373
+ gap: 0.5rem;
374
+ }
375
+
376
+ .findings-count .selected-count {
377
+ color: hsl(var(--primary));
378
+ font-weight: 500;
379
+ }
380
+
381
+ .findings-count-actions {
382
+ display: flex;
383
+ gap: 0.5rem;
384
+ }
385
+
386
+ .select-action-btn {
387
+ display: inline-flex;
388
+ align-items: center;
389
+ gap: 0.25rem;
390
+ padding: 0.25rem 0.5rem;
391
+ border-radius: 0.25rem;
392
+ font-size: 0.625rem;
393
+ font-weight: 500;
394
+ color: hsl(var(--muted-foreground));
395
+ background: transparent;
396
+ border: 1px solid hsl(var(--border));
397
+ cursor: pointer;
398
+ transition: all 0.15s ease;
399
+ }
400
+
401
+ .select-action-btn:hover {
402
+ color: hsl(var(--foreground));
403
+ background: hsl(var(--muted));
404
+ border-color: hsl(var(--primary) / 0.3);
405
+ }
406
+
407
+ /* Findings List */
408
+ .findings-list {
409
+ flex: 1;
410
+ overflow-y: auto;
411
+ padding: 0.5rem;
412
+ }
413
+
414
+ .findings-empty {
415
+ display: flex;
416
+ flex-direction: column;
417
+ align-items: center;
418
+ justify-content: center;
419
+ height: 200px;
420
+ color: hsl(var(--muted-foreground));
421
+ text-align: center;
422
+ }
423
+
424
+ /* Finding Item */
425
+ .finding-item {
426
+ display: flex;
427
+ gap: 0.75rem;
428
+ padding: 0.75rem;
429
+ border-radius: 0.5rem;
430
+ cursor: pointer;
431
+ transition: all 0.15s ease;
432
+ }
433
+
434
+ .finding-item:hover {
435
+ background: hsl(var(--muted) / 0.5);
436
+ }
437
+
438
+ .finding-item.active {
439
+ background: hsl(var(--primary) / 0.1);
440
+ border: 1px solid hsl(var(--primary) / 0.3);
441
+ }
442
+
443
+ .finding-item.selected {
444
+ background: hsl(var(--primary) / 0.05);
445
+ }
446
+
447
+ .finding-item.dismissed {
448
+ opacity: 0.5;
449
+ }
450
+
451
+ .finding-item.exported {
452
+ opacity: 0.6;
453
+ background: hsl(var(--success) / 0.05);
454
+ border: 1px solid hsl(var(--success) / 0.2);
455
+ }
456
+
457
+ .finding-item.exported:hover {
458
+ background: hsl(var(--success) / 0.08);
459
+ }
460
+
461
+ /* Exported Badge */
462
+ .exported-badge {
463
+ display: inline-flex;
464
+ align-items: center;
465
+ gap: 0.25rem;
466
+ padding: 0.125rem 0.5rem;
467
+ border-radius: 9999px;
468
+ font-size: 0.625rem;
469
+ font-weight: 600;
470
+ text-transform: uppercase;
471
+ background: hsl(var(--success) / 0.1);
472
+ color: hsl(var(--success));
473
+ }
474
+
475
+ .finding-checkbox input:disabled {
476
+ opacity: 0.5;
477
+ cursor: not-allowed;
478
+ }
479
+
480
+ .finding-checkbox {
481
+ display: flex;
482
+ align-items: flex-start;
483
+ padding-top: 0.125rem;
484
+ }
485
+
486
+ .finding-checkbox input {
487
+ width: 16px;
488
+ height: 16px;
489
+ cursor: pointer;
490
+ }
491
+
492
+ .finding-content {
493
+ flex: 1;
494
+ min-width: 0;
495
+ }
496
+
497
+ .finding-header {
498
+ display: flex;
499
+ gap: 0.375rem;
500
+ margin-bottom: 0.375rem;
501
+ }
502
+
503
+ .finding-title {
504
+ font-size: 0.875rem;
505
+ font-weight: 500;
506
+ color: hsl(var(--foreground));
507
+ line-height: 1.3;
508
+ margin-bottom: 0.25rem;
509
+ }
510
+
511
+ .finding-location {
512
+ display: flex;
513
+ align-items: center;
514
+ gap: 0.25rem;
515
+ font-size: 0.75rem;
516
+ color: hsl(var(--muted-foreground));
517
+ }
518
+
519
+ /* Priority Badge */
520
+ .priority-badge {
521
+ padding: 0.125rem 0.375rem;
522
+ border-radius: 0.25rem;
523
+ font-size: 0.625rem;
524
+ font-weight: 600;
525
+ text-transform: uppercase;
526
+ }
527
+
528
+ .priority-badge.critical {
529
+ background: hsl(0 84% 60% / 0.1);
530
+ color: hsl(0 84% 60%);
531
+ }
532
+
533
+ .priority-badge.high {
534
+ background: hsl(38 92% 50% / 0.1);
535
+ color: hsl(38 92% 50%);
536
+ }
537
+
538
+ .priority-badge.medium {
539
+ background: hsl(48 96% 53% / 0.1);
540
+ color: hsl(48 70% 40%);
541
+ }
542
+
543
+ .priority-badge.low {
544
+ background: hsl(142 76% 36% / 0.1);
545
+ color: hsl(142 76% 36%);
546
+ }
547
+
548
+ /* Bulk Actions */
549
+ .bulk-actions {
550
+ display: flex;
551
+ align-items: center;
552
+ gap: 0.75rem;
553
+ padding: 0.75rem 1rem;
554
+ border-top: 1px solid hsl(var(--border));
555
+ background: hsl(var(--muted) / 0.3);
556
+ }
557
+
558
+ .bulk-count {
559
+ font-size: 0.75rem;
560
+ font-weight: 500;
561
+ color: hsl(var(--foreground));
562
+ }
563
+
564
+ .bulk-action-btn {
565
+ display: inline-flex;
566
+ align-items: center;
567
+ gap: 0.375rem;
568
+ padding: 0.375rem 0.75rem;
569
+ border-radius: 0.375rem;
570
+ font-size: 0.75rem;
571
+ font-weight: 500;
572
+ border: none;
573
+ cursor: pointer;
574
+ transition: all 0.15s ease;
575
+ }
576
+
577
+ .bulk-action-btn.export {
578
+ background: hsl(var(--primary));
579
+ color: hsl(var(--primary-foreground));
580
+ }
581
+
582
+ .bulk-action-btn.export:hover {
583
+ opacity: 0.9;
584
+ }
585
+
586
+ .bulk-action-btn.dismiss {
587
+ background: hsl(var(--muted));
588
+ color: hsl(var(--muted-foreground));
589
+ }
590
+
591
+ .bulk-action-btn.dismiss:hover {
592
+ background: hsl(var(--destructive) / 0.1);
593
+ color: hsl(var(--destructive));
594
+ }
595
+
596
+ /* Preview Panel */
597
+ .discovery-preview-panel {
598
+ background: hsl(var(--card));
599
+ border: 1px solid hsl(var(--border));
600
+ border-radius: 0.75rem;
601
+ overflow: hidden;
602
+ }
603
+
604
+ .preview-empty {
605
+ display: flex;
606
+ flex-direction: column;
607
+ align-items: center;
608
+ justify-content: center;
609
+ height: 100%;
610
+ min-height: 300px;
611
+ color: hsl(var(--muted-foreground));
612
+ text-align: center;
613
+ }
614
+
615
+ /* Finding Preview */
616
+ .finding-preview {
617
+ padding: 1.25rem;
618
+ height: 100%;
619
+ overflow-y: auto;
620
+ }
621
+
622
+ .preview-header {
623
+ margin-bottom: 1.25rem;
624
+ }
625
+
626
+ .preview-badges {
627
+ display: flex;
628
+ flex-wrap: wrap;
629
+ gap: 0.5rem;
630
+ margin-bottom: 0.75rem;
631
+ }
632
+
633
+ .confidence-badge {
634
+ padding: 0.125rem 0.5rem;
635
+ border-radius: 9999px;
636
+ font-size: 0.625rem;
637
+ font-weight: 500;
638
+ background: hsl(var(--muted));
639
+ color: hsl(var(--muted-foreground));
640
+ }
641
+
642
+ .preview-title {
643
+ font-size: 1.125rem;
644
+ font-weight: 600;
645
+ color: hsl(var(--foreground));
646
+ line-height: 1.3;
647
+ }
648
+
649
+ .preview-section {
650
+ margin-bottom: 1rem;
651
+ }
652
+
653
+ .preview-section h4 {
654
+ display: flex;
655
+ align-items: center;
656
+ gap: 0.5rem;
657
+ font-size: 0.75rem;
658
+ font-weight: 600;
659
+ text-transform: uppercase;
660
+ letter-spacing: 0.05em;
661
+ color: hsl(var(--muted-foreground));
662
+ margin-bottom: 0.5rem;
663
+ }
664
+
665
+ .preview-location code {
666
+ padding: 0.25rem 0.5rem;
667
+ border-radius: 0.25rem;
668
+ font-size: 0.75rem;
669
+ background: hsl(var(--muted));
670
+ color: hsl(var(--primary));
671
+ }
672
+
673
+ .preview-snippet {
674
+ padding: 0.75rem;
675
+ border-radius: 0.5rem;
676
+ background: hsl(var(--muted));
677
+ overflow-x: auto;
678
+ }
679
+
680
+ .preview-snippet code {
681
+ font-size: 0.75rem;
682
+ white-space: pre;
683
+ }
684
+
685
+ .preview-description,
686
+ .preview-impact,
687
+ .preview-recommendation {
688
+ font-size: 0.875rem;
689
+ line-height: 1.5;
690
+ color: hsl(var(--foreground));
691
+ }
692
+
693
+ /* Suggested Issue */
694
+ .preview-section.suggested-issue {
695
+ padding: 0.75rem;
696
+ background: hsl(var(--primary) / 0.05);
697
+ border: 1px solid hsl(var(--primary) / 0.2);
698
+ border-radius: 0.5rem;
699
+ }
700
+
701
+ .suggested-issue-content {
702
+ margin-top: 0.5rem;
703
+ }
704
+
705
+ .suggested-issue-content .issue-title {
706
+ font-size: 0.875rem;
707
+ font-weight: 500;
708
+ color: hsl(var(--foreground));
709
+ margin-bottom: 0.5rem;
710
+ }
711
+
712
+ .suggested-issue-content .issue-meta {
713
+ display: flex;
714
+ flex-wrap: wrap;
715
+ gap: 0.375rem;
716
+ }
717
+
718
+ .issue-type,
719
+ .issue-priority,
720
+ .issue-label {
721
+ padding: 0.125rem 0.5rem;
722
+ border-radius: 0.25rem;
723
+ font-size: 0.625rem;
724
+ font-weight: 500;
725
+ }
726
+
727
+ .issue-type {
728
+ background: hsl(var(--primary) / 0.1);
729
+ color: hsl(var(--primary));
730
+ }
731
+
732
+ .issue-priority {
733
+ background: hsl(var(--warning) / 0.1);
734
+ color: hsl(var(--warning));
735
+ }
736
+
737
+ .issue-label {
738
+ background: hsl(var(--muted));
739
+ color: hsl(var(--muted-foreground));
740
+ }
741
+
742
+ /* Preview Actions */
743
+ .preview-actions {
744
+ display: flex;
745
+ gap: 0.75rem;
746
+ margin-top: 1.5rem;
747
+ padding-top: 1rem;
748
+ border-top: 1px solid hsl(var(--border));
749
+ }
750
+
751
+ .preview-action-btn {
752
+ display: inline-flex;
753
+ align-items: center;
754
+ justify-content: center;
755
+ gap: 0.5rem;
756
+ padding: 0.5rem 1rem;
757
+ border-radius: 0.5rem;
758
+ font-size: 0.875rem;
759
+ font-weight: 500;
760
+ border: none;
761
+ cursor: pointer;
762
+ transition: all 0.15s ease;
763
+ flex: 1;
764
+ }
765
+
766
+ .preview-action-btn.primary {
767
+ background: hsl(var(--primary));
768
+ color: hsl(var(--primary-foreground));
769
+ }
770
+
771
+ .preview-action-btn.primary:hover {
772
+ opacity: 0.9;
773
+ }
774
+
775
+ .preview-action-btn.secondary {
776
+ background: hsl(var(--muted));
777
+ color: hsl(var(--muted-foreground));
778
+ }
779
+
780
+ .preview-action-btn.secondary:hover {
781
+ color: hsl(var(--destructive));
782
+ background: hsl(var(--destructive) / 0.1);
783
+ }