lumencode 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.
- package/README.md +41 -0
- package/hooks/claude-post-tool-batch.js +51 -0
- package/hooks/codex-hook.js +56 -0
- package/hooks/init-steps.js +10 -0
- package/hooks/install-codex.js +9 -0
- package/hooks/install.js +14 -0
- package/hooks/opencode-hook.js +45 -0
- package/hooks/post-tool-use.js +42 -0
- package/index.js +236 -22
- package/lib/aggregate.js +27 -9
- package/lib/attribution.js +13 -0
- package/lib/capture-recorder.js +141 -0
- package/lib/config.js +26 -2
- package/lib/git-attribution-candidates.js +37 -0
- package/lib/git-attribution-options.js +105 -0
- package/lib/git-paths.js +41 -0
- package/lib/git.js +350 -167
- package/lib/hooks-manager.js +379 -0
- package/lib/line-blame.js +140 -0
- package/lib/parser.js +40 -18
- package/lib/parsers/base.js +69 -67
- package/lib/parsers/claude.js +51 -53
- package/lib/parsers/codex.js +21 -9
- package/lib/parsers/index.js +153 -151
- package/lib/parsers/opencode.js +28 -20
- package/lib/report.js +3 -3
- package/lib/server.js +213 -35
- package/lib/step-schema.js +217 -0
- package/lib/step-tracker.js +323 -0
- package/package.json +8 -2
- package/public/api.js +21 -0
- package/public/app.js +127 -2
- package/public/config.js +2 -0
- package/public/git-insights.js +19 -0
- package/public/index.html +69 -0
- package/public/style.css +85 -1
package/public/style.css
CHANGED
|
@@ -378,6 +378,7 @@ input, textarea { font-family: inherit; color: inherit; }
|
|
|
378
378
|
color: var(--foreground);
|
|
379
379
|
}
|
|
380
380
|
.btn-outline:hover { border-color: var(--foreground); background: var(--ink-8); }
|
|
381
|
+
.btn:disabled { opacity: 0.55; cursor: not-allowed; }
|
|
381
382
|
.btn-ghost {
|
|
382
383
|
padding: 6px 10px;
|
|
383
384
|
color: var(--foreground);
|
|
@@ -396,6 +397,88 @@ input, textarea { font-family: inherit; color: inherit; }
|
|
|
396
397
|
0 8px 24px -12px var(--card-lift-drop-2);
|
|
397
398
|
}
|
|
398
399
|
|
|
400
|
+
.hooks-notice {
|
|
401
|
+
display: flex;
|
|
402
|
+
align-items: center;
|
|
403
|
+
justify-content: space-between;
|
|
404
|
+
gap: 16px;
|
|
405
|
+
margin: 12px 0 16px;
|
|
406
|
+
padding: 12px 14px;
|
|
407
|
+
border: 1px solid var(--border);
|
|
408
|
+
border-radius: 8px;
|
|
409
|
+
background: var(--ink-4);
|
|
410
|
+
}
|
|
411
|
+
|
|
412
|
+
.hooks-notice-title {
|
|
413
|
+
font-size: 13px;
|
|
414
|
+
font-weight: 500;
|
|
415
|
+
}
|
|
416
|
+
|
|
417
|
+
.hooks-notice-meta {
|
|
418
|
+
margin-top: 4px;
|
|
419
|
+
font-family: var(--font-mono);
|
|
420
|
+
font-size: 10px;
|
|
421
|
+
letter-spacing: 0.04em;
|
|
422
|
+
opacity: 0.62;
|
|
423
|
+
}
|
|
424
|
+
|
|
425
|
+
/* ── Rail Hooks ── */
|
|
426
|
+
.rail-hooks {
|
|
427
|
+
margin: auto 14px 0;
|
|
428
|
+
padding: 12px;
|
|
429
|
+
border: 1px solid var(--border);
|
|
430
|
+
border-radius: 8px;
|
|
431
|
+
background: var(--ink-4);
|
|
432
|
+
}
|
|
433
|
+
|
|
434
|
+
.rail-hooks-meta {
|
|
435
|
+
font-family: var(--font-mono);
|
|
436
|
+
font-size: 9px;
|
|
437
|
+
letter-spacing: 0.04em;
|
|
438
|
+
opacity: 0.62;
|
|
439
|
+
line-height: 1.5;
|
|
440
|
+
word-break: break-all;
|
|
441
|
+
}
|
|
442
|
+
|
|
443
|
+
.hooks-confirm-files {
|
|
444
|
+
margin-top: 12px;
|
|
445
|
+
padding: 12px;
|
|
446
|
+
border: 1px solid var(--border);
|
|
447
|
+
border-radius: 6px;
|
|
448
|
+
background: var(--ink-4);
|
|
449
|
+
display: flex;
|
|
450
|
+
flex-direction: column;
|
|
451
|
+
gap: 6px;
|
|
452
|
+
font-family: var(--font-mono);
|
|
453
|
+
font-size: 11px;
|
|
454
|
+
line-height: 1.5;
|
|
455
|
+
opacity: 0.8;
|
|
456
|
+
}
|
|
457
|
+
|
|
458
|
+
.rail-hooks-btn {
|
|
459
|
+
flex: 1;
|
|
460
|
+
padding: 4px 0;
|
|
461
|
+
font-size: 10px;
|
|
462
|
+
font-weight: 500;
|
|
463
|
+
text-align: center;
|
|
464
|
+
border: none;
|
|
465
|
+
border-radius: 4px;
|
|
466
|
+
cursor: pointer;
|
|
467
|
+
color: var(--background);
|
|
468
|
+
background: var(--foreground);
|
|
469
|
+
}
|
|
470
|
+
|
|
471
|
+
.rail-hooks-btn:disabled {
|
|
472
|
+
opacity: 0.4;
|
|
473
|
+
cursor: not-allowed;
|
|
474
|
+
}
|
|
475
|
+
|
|
476
|
+
.rail-hooks-btn--off {
|
|
477
|
+
background: transparent;
|
|
478
|
+
border: 1px solid var(--border);
|
|
479
|
+
color: var(--foreground);
|
|
480
|
+
}
|
|
481
|
+
|
|
399
482
|
/* ── KPI Strip ── */
|
|
400
483
|
.kpi-strip {
|
|
401
484
|
display: grid;
|
|
@@ -855,7 +938,8 @@ input, textarea { font-family: inherit; color: inherit; }
|
|
|
855
938
|
.toast {
|
|
856
939
|
position: fixed;
|
|
857
940
|
top: 16px;
|
|
858
|
-
|
|
941
|
+
left: 50%;
|
|
942
|
+
transform: translateX(-50%);
|
|
859
943
|
z-index: 300;
|
|
860
944
|
background: var(--foreground);
|
|
861
945
|
color: var(--background);
|