tech-debt-visualizer 0.2.6 → 0.2.8
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.
|
@@ -57,7 +57,7 @@ body.dashboard-page {
|
|
|
57
57
|
flex-direction: column;
|
|
58
58
|
}
|
|
59
59
|
|
|
60
|
-
/* ——— Dashboard header (Grafana
|
|
60
|
+
/* ——— Dashboard header (Grafana: bar with accent) ——— */
|
|
61
61
|
.dashboard-header {
|
|
62
62
|
display: flex;
|
|
63
63
|
align-items: center;
|
|
@@ -67,6 +67,7 @@ body.dashboard-page {
|
|
|
67
67
|
padding: 0.75rem 1.5rem;
|
|
68
68
|
background: var(--bg-elevated);
|
|
69
69
|
border-bottom: 1px solid var(--border);
|
|
70
|
+
border-left: 3px solid var(--link);
|
|
70
71
|
position: sticky;
|
|
71
72
|
top: 0;
|
|
72
73
|
z-index: 10;
|
|
@@ -118,11 +119,11 @@ body.dashboard-page {
|
|
|
118
119
|
.dashboard-score-of { font-size: 0.85rem; font-weight: 500; color: var(--text-muted); }
|
|
119
120
|
.dashboard-score-label { font-size: 11px; font-weight: 500; text-transform: uppercase; letter-spacing: 0.04em; margin-left: 0.35rem; opacity: 0.95; }
|
|
120
121
|
|
|
121
|
-
.dashboard-score.tier-1 { background: rgba(229, 57, 53, 0.
|
|
122
|
-
.dashboard-score.tier-2 { background: rgba(245, 124, 0, 0.
|
|
123
|
-
.dashboard-score.tier-3 { background: rgba(249, 168, 37, 0.
|
|
124
|
-
.dashboard-score.tier-4 { background: rgba(41, 182, 246, 0.
|
|
125
|
-
.dashboard-score.tier-5 { background: rgba(67, 160, 71, 0.
|
|
122
|
+
.dashboard-score.tier-1 { background: rgba(229, 57, 53, 0.2); color: #ff8a80; font-weight: 700; }
|
|
123
|
+
.dashboard-score.tier-2 { background: rgba(245, 124, 0, 0.2); color: #ffb74d; font-weight: 700; }
|
|
124
|
+
.dashboard-score.tier-3 { background: rgba(249, 168, 37, 0.2); color: #ffd54f; font-weight: 700; }
|
|
125
|
+
.dashboard-score.tier-4 { background: rgba(41, 182, 246, 0.2); color: #82b1ff; font-weight: 700; }
|
|
126
|
+
.dashboard-score.tier-5 { background: rgba(67, 160, 71, 0.2); color: #81c784; font-weight: 700; }
|
|
126
127
|
|
|
127
128
|
.dashboard-date {
|
|
128
129
|
font-size: 12px;
|
|
@@ -195,29 +196,33 @@ body.dashboard-page {
|
|
|
195
196
|
.dashboard-main { padding: 0.5rem 0.75rem; }
|
|
196
197
|
}
|
|
197
198
|
|
|
198
|
-
/* ——— Footer: AI prompts button ——— */
|
|
199
|
+
/* ——— Footer: AI prompts button (Grafana-style, fits dashboard) ——— */
|
|
199
200
|
.dashboard-footer {
|
|
200
201
|
flex-shrink: 0;
|
|
201
|
-
padding: 0.
|
|
202
|
-
border-top: 1px solid var(--border
|
|
202
|
+
padding: 0.6rem 0 0;
|
|
203
|
+
border-top: 1px solid var(--border);
|
|
203
204
|
margin-top: 0.5rem;
|
|
205
|
+
display: flex;
|
|
206
|
+
align-items: center;
|
|
204
207
|
}
|
|
205
208
|
|
|
206
209
|
.btn-ai-prompts {
|
|
207
210
|
font: inherit;
|
|
208
|
-
font-size:
|
|
211
|
+
font-size: 12px;
|
|
209
212
|
font-weight: 600;
|
|
210
|
-
|
|
213
|
+
letter-spacing: 0.02em;
|
|
214
|
+
padding: 0.45rem 0.9rem;
|
|
211
215
|
background: var(--surface);
|
|
212
|
-
color: var(--
|
|
216
|
+
color: var(--link);
|
|
213
217
|
border: 1px solid var(--border);
|
|
214
218
|
border-radius: var(--radius);
|
|
215
219
|
cursor: pointer;
|
|
220
|
+
transition: background 0.15s ease, border-color 0.15s ease;
|
|
216
221
|
}
|
|
217
222
|
|
|
218
223
|
.btn-ai-prompts:hover {
|
|
219
|
-
background:
|
|
220
|
-
border-color: var(--
|
|
224
|
+
background: rgba(87, 148, 242, 0.08);
|
|
225
|
+
border-color: var(--link);
|
|
221
226
|
}
|
|
222
227
|
|
|
223
228
|
/* ——— AI prompts overlay (blank screen) ——— */
|
|
@@ -310,19 +315,22 @@ body.dashboard-page {
|
|
|
310
315
|
.panel-header {
|
|
311
316
|
padding: 0.6rem 0.85rem;
|
|
312
317
|
border-bottom: 1px solid var(--border-subtle);
|
|
313
|
-
background: rgba(0, 0, 0, 0.
|
|
318
|
+
background: rgba(0, 0, 0, 0.05);
|
|
314
319
|
flex-shrink: 0;
|
|
315
320
|
}
|
|
316
321
|
|
|
322
|
+
.panel-title {
|
|
323
|
+
color: var(--text);
|
|
324
|
+
}
|
|
325
|
+
|
|
317
326
|
[data-theme="light"] .panel-header {
|
|
318
|
-
background: rgba(0, 0, 0, 0.
|
|
327
|
+
background: rgba(0, 0, 0, 0.03);
|
|
319
328
|
}
|
|
320
329
|
|
|
321
330
|
.panel-title {
|
|
322
331
|
margin: 0;
|
|
323
332
|
font-size: 12px;
|
|
324
333
|
font-weight: 700;
|
|
325
|
-
color: var(--text);
|
|
326
334
|
letter-spacing: 0.02em;
|
|
327
335
|
text-transform: uppercase;
|
|
328
336
|
}
|
|
@@ -342,7 +350,16 @@ body.dashboard-page {
|
|
|
342
350
|
text-align: center;
|
|
343
351
|
}
|
|
344
352
|
|
|
345
|
-
/* ——— Score panel (top-left): numeric score
|
|
353
|
+
/* ——— Score panel (top-left): numeric score, tier accent ——— */
|
|
354
|
+
.panel-score {
|
|
355
|
+
border-left: 3px solid var(--link);
|
|
356
|
+
}
|
|
357
|
+
.panel-score[data-tier="1"] { border-left-color: var(--tier-1); }
|
|
358
|
+
.panel-score[data-tier="2"] { border-left-color: var(--tier-2); }
|
|
359
|
+
.panel-score[data-tier="3"] { border-left-color: var(--tier-3); }
|
|
360
|
+
.panel-score[data-tier="4"] { border-left-color: var(--tier-4); }
|
|
361
|
+
.panel-score[data-tier="5"] { border-left-color: var(--tier-5); }
|
|
362
|
+
|
|
346
363
|
.panel-score .panel-body-score {
|
|
347
364
|
text-align: center;
|
|
348
365
|
padding: 1rem 0.85rem;
|
|
@@ -436,9 +453,16 @@ body.dashboard-page {
|
|
|
436
453
|
gap: 0.75rem 1.25rem;
|
|
437
454
|
}
|
|
438
455
|
|
|
456
|
+
.panel-heatmap .panel-header-heatmap {
|
|
457
|
+
border-left: 2px solid var(--tier-3);
|
|
458
|
+
}
|
|
439
459
|
.panel-heatmap .panel-title { margin-right: 0.5rem; }
|
|
440
460
|
.panel-heatmap .panel-desc { margin: 0.15rem 0 0; flex-basis: 100%; }
|
|
441
461
|
|
|
462
|
+
.panel-list .panel-header {
|
|
463
|
+
border-left: 2px solid var(--link);
|
|
464
|
+
}
|
|
465
|
+
|
|
442
466
|
.legend-inline {
|
|
443
467
|
margin: 0;
|
|
444
468
|
margin-left: auto;
|
|
@@ -470,45 +494,62 @@ body.dashboard-page {
|
|
|
470
494
|
margin: 0;
|
|
471
495
|
}
|
|
472
496
|
|
|
473
|
-
/* ——— Treemap:
|
|
497
|
+
/* ——— Treemap: colored block + file name visible ——— */
|
|
474
498
|
#treemap {
|
|
475
499
|
display: flex;
|
|
476
500
|
flex-wrap: wrap;
|
|
477
|
-
gap:
|
|
501
|
+
gap: 10px 12px;
|
|
478
502
|
min-height: 120px;
|
|
479
503
|
padding: 0.25rem 0;
|
|
480
504
|
}
|
|
481
505
|
|
|
482
506
|
.treemap-cell {
|
|
483
|
-
width:
|
|
484
|
-
height: 44px;
|
|
485
|
-
min-width: 44px;
|
|
486
|
-
min-height: 44px;
|
|
507
|
+
width: 92px;
|
|
487
508
|
flex: none;
|
|
488
509
|
display: flex;
|
|
510
|
+
flex-direction: column;
|
|
489
511
|
align-items: center;
|
|
490
|
-
|
|
491
|
-
padding: 4px;
|
|
492
|
-
font-size: 10px;
|
|
512
|
+
gap: 4px;
|
|
493
513
|
cursor: pointer;
|
|
494
|
-
|
|
495
|
-
|
|
496
|
-
|
|
497
|
-
|
|
514
|
+
padding: 0;
|
|
515
|
+
border: none;
|
|
516
|
+
background: none;
|
|
517
|
+
}
|
|
518
|
+
|
|
519
|
+
.treemap-cell-block {
|
|
520
|
+
width: 40px;
|
|
521
|
+
height: 40px;
|
|
522
|
+
flex-shrink: 0;
|
|
498
523
|
border-radius: 4px;
|
|
524
|
+
border: 1px solid rgba(0, 0, 0, 0.15);
|
|
525
|
+
}
|
|
526
|
+
|
|
527
|
+
.treemap-cell-name {
|
|
528
|
+
font-size: 10px;
|
|
529
|
+
line-height: 1.3;
|
|
530
|
+
color: var(--text);
|
|
499
531
|
text-align: center;
|
|
532
|
+
max-width: 100%;
|
|
533
|
+
overflow: hidden;
|
|
534
|
+
display: -webkit-box;
|
|
535
|
+
-webkit-line-clamp: 2;
|
|
536
|
+
-webkit-box-orient: vertical;
|
|
537
|
+
word-break: break-all;
|
|
500
538
|
}
|
|
501
539
|
|
|
502
|
-
.treemap-cell:hover {
|
|
540
|
+
.treemap-cell:hover .treemap-cell-block {
|
|
503
541
|
outline: 2px solid var(--link);
|
|
504
542
|
outline-offset: 1px;
|
|
505
543
|
}
|
|
544
|
+
.treemap-cell:hover .treemap-cell-name {
|
|
545
|
+
color: var(--link);
|
|
546
|
+
}
|
|
506
547
|
|
|
507
|
-
.treemap-cell[data-severity="critical"] { background: var(--tier-1);
|
|
508
|
-
.treemap-cell[data-severity="high"] { background: var(--tier-2);
|
|
509
|
-
.treemap-cell[data-severity="medium"] { background: var(--tier-3);
|
|
510
|
-
.treemap-cell[data-severity="low"] { background: var(--tier-5);
|
|
511
|
-
.treemap-cell[data-severity="none"] { background: var(--border);
|
|
548
|
+
.treemap-cell[data-severity="critical"] .treemap-cell-block { background: var(--tier-1); border-color: rgba(0,0,0,0.2); }
|
|
549
|
+
.treemap-cell[data-severity="high"] .treemap-cell-block { background: var(--tier-2); border-color: rgba(0,0,0,0.15); }
|
|
550
|
+
.treemap-cell[data-severity="medium"] .treemap-cell-block { background: var(--tier-3); border-color: rgba(0,0,0,0.1); }
|
|
551
|
+
.treemap-cell[data-severity="low"] .treemap-cell-block { background: var(--tier-5); border-color: rgba(0,0,0,0.1); }
|
|
552
|
+
.treemap-cell[data-severity="none"] .treemap-cell-block { background: var(--border); border-color: var(--border-subtle); }
|
|
512
553
|
|
|
513
554
|
.legend {
|
|
514
555
|
display: flex;
|
|
@@ -142,11 +142,14 @@ fileScores.forEach(function (_ref) {
|
|
|
142
142
|
var llmScore =
|
|
143
143
|
fileM && fileM.llmFileScore != null ? " (LLM debt: " + fileM.llmFileScore + "/100)" : "";
|
|
144
144
|
var severity = (fileM && fileM.llmSeverity) ? fileM.llmSeverity : worstSeverity(items);
|
|
145
|
+
var basename = file.split("/").pop() || file;
|
|
145
146
|
var cell = document.createElement("div");
|
|
146
147
|
cell.className = "treemap-cell";
|
|
147
148
|
cell.dataset.severity = severity;
|
|
148
149
|
cell.title = file + llmScore;
|
|
149
|
-
cell.
|
|
150
|
+
cell.innerHTML =
|
|
151
|
+
'<span class="treemap-cell-block" aria-hidden="true"></span>' +
|
|
152
|
+
'<span class="treemap-cell-name">' + escapeHtml(basename) + "</span>";
|
|
150
153
|
cell.addEventListener("click", function () { showDetail(file, items); });
|
|
151
154
|
treemapEl.appendChild(cell);
|
|
152
155
|
});
|
package/dist/reports/html.js
CHANGED
|
@@ -104,7 +104,7 @@ function buildHtml(run, title, darkMode, css, script) {
|
|
|
104
104
|
<main class="dashboard-main">
|
|
105
105
|
<div class="dashboard-grid-2x2">
|
|
106
106
|
<div class="dashboard-cell dashboard-cell-score">
|
|
107
|
-
<div class="panel panel-score">
|
|
107
|
+
<div class="panel panel-score" data-tier="${cleanliness.tier}">
|
|
108
108
|
<div class="panel-header">
|
|
109
109
|
<h2 class="panel-title">Technical Debt Cleanliness Score</h2>
|
|
110
110
|
</div>
|
|
@@ -167,7 +167,7 @@ function buildHtml(run, title, darkMode, css, script) {
|
|
|
167
167
|
</div>
|
|
168
168
|
|
|
169
169
|
<div class="dashboard-cell dashboard-cell-list">
|
|
170
|
-
<div class="panel">
|
|
170
|
+
<div class="panel panel-list">
|
|
171
171
|
<div class="panel-header">
|
|
172
172
|
<h2 class="panel-title">Ratings & files</h2>
|
|
173
173
|
<p class="panel-desc">Files rated above none by static or LLM. Click for full details.</p>
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "tech-debt-visualizer",
|
|
3
|
-
"version": "0.2.
|
|
3
|
+
"version": "0.2.8",
|
|
4
4
|
"description": "Language-agnostic CLI that analyzes repos and generates interactive technical debt visualizations with AI-powered insights",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "dist/index.js",
|