jupyterlab_claude_code_extension 1.2.24 → 1.2.26
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 +2 -1
- package/lib/widget.d.ts +34 -0
- package/lib/widget.js +357 -49
- package/package.json +1 -1
- package/src/__tests__/jupyterlab_claude_code_extension.spec.ts +181 -5
- package/src/widget.ts +394 -51
- package/style/base.css +114 -12
package/style/base.css
CHANGED
|
@@ -377,9 +377,50 @@
|
|
|
377
377
|
border-color: var(--jp-brand-color1);
|
|
378
378
|
}
|
|
379
379
|
|
|
380
|
+
/* Table header strip above the scrollable list - select-all and count. */
|
|
381
|
+
.jp-ClaudeSessionsPanel-branchHeader {
|
|
382
|
+
display: flex;
|
|
383
|
+
align-items: center;
|
|
384
|
+
justify-content: space-between;
|
|
385
|
+
padding: 0 2px;
|
|
386
|
+
}
|
|
387
|
+
|
|
388
|
+
.jp-ClaudeSessionsPanel-branchHeaderCount {
|
|
389
|
+
color: var(--jp-ui-font-color2);
|
|
390
|
+
font-size: var(--jp-ui-font-size0);
|
|
391
|
+
}
|
|
392
|
+
|
|
393
|
+
/* Fixed-width first column so the checkbox (branch rows) and the empty cell
|
|
394
|
+
(current row) keep the name column aligned, giving a table feel. */
|
|
395
|
+
.jp-ClaudeSessionsPanel-branchSelectCell {
|
|
396
|
+
flex: none;
|
|
397
|
+
width: 24px;
|
|
398
|
+
height: 24px;
|
|
399
|
+
display: flex;
|
|
400
|
+
align-items: center;
|
|
401
|
+
justify-content: center;
|
|
402
|
+
cursor: pointer;
|
|
403
|
+
}
|
|
404
|
+
|
|
380
405
|
.jp-ClaudeSessionsPanel-branchList {
|
|
381
406
|
max-height: 280px;
|
|
382
407
|
overflow-y: auto;
|
|
408
|
+
position: relative;
|
|
409
|
+
border: 1px solid var(--jp-border-color2);
|
|
410
|
+
border-radius: 2px;
|
|
411
|
+
}
|
|
412
|
+
|
|
413
|
+
/* Visually-hidden polite live region (delete announcements). */
|
|
414
|
+
.jp-ClaudeSessionsPanel-srOnly {
|
|
415
|
+
position: absolute;
|
|
416
|
+
width: 1px;
|
|
417
|
+
height: 1px;
|
|
418
|
+
padding: 0;
|
|
419
|
+
margin: -1px;
|
|
420
|
+
overflow: hidden;
|
|
421
|
+
clip: rect(0, 0, 0, 0);
|
|
422
|
+
white-space: nowrap;
|
|
423
|
+
border: 0;
|
|
383
424
|
}
|
|
384
425
|
|
|
385
426
|
.jp-ClaudeSessionsPanel-branchRow {
|
|
@@ -422,6 +463,25 @@
|
|
|
422
463
|
color: var(--jp-ui-font-color1);
|
|
423
464
|
}
|
|
424
465
|
|
|
466
|
+
/* Per-row "Open" launches the conversation in its own terminal. Compact
|
|
467
|
+
brand-outlined button matching the popup design language (2px radius). */
|
|
468
|
+
.jp-ClaudeSessionsPanel-branchOpen {
|
|
469
|
+
flex: none;
|
|
470
|
+
padding: 0 8px;
|
|
471
|
+
border: 1px solid var(--jp-brand-color1);
|
|
472
|
+
border-radius: 2px;
|
|
473
|
+
background: transparent;
|
|
474
|
+
color: var(--jp-brand-color1);
|
|
475
|
+
font-size: var(--jp-ui-font-size0);
|
|
476
|
+
cursor: pointer;
|
|
477
|
+
transition: background 120ms ease;
|
|
478
|
+
}
|
|
479
|
+
|
|
480
|
+
.jp-ClaudeSessionsPanel-branchOpen:hover {
|
|
481
|
+
background: var(--jp-brand-color1);
|
|
482
|
+
color: var(--jp-ui-inverse-font-color1);
|
|
483
|
+
}
|
|
484
|
+
|
|
425
485
|
.jp-ClaudeSessionsPanel-branchTime {
|
|
426
486
|
flex: none;
|
|
427
487
|
width: 4em;
|
|
@@ -437,23 +497,39 @@
|
|
|
437
497
|
cursor: pointer;
|
|
438
498
|
}
|
|
439
499
|
|
|
440
|
-
/* The current conversation
|
|
500
|
+
/* The current conversation is pinned at the top of the scroll area and
|
|
501
|
+
accented (brand left-bar + tint) so it reads as the active one - not
|
|
502
|
+
dimmed; it is not selectable or deletable. */
|
|
441
503
|
.jp-ClaudeSessionsPanel-branchRow.jp-mod-current {
|
|
504
|
+
position: sticky;
|
|
505
|
+
top: 0;
|
|
506
|
+
z-index: 1;
|
|
442
507
|
cursor: default;
|
|
443
|
-
|
|
508
|
+
background: var(--jp-layout-color2);
|
|
509
|
+
border-left: 3px solid var(--jp-brand-color1);
|
|
510
|
+
padding-left: 5px;
|
|
444
511
|
}
|
|
445
512
|
|
|
446
513
|
.jp-ClaudeSessionsPanel-branchRow.jp-mod-current:hover {
|
|
447
|
-
background:
|
|
514
|
+
background: var(--jp-layout-color2);
|
|
515
|
+
}
|
|
516
|
+
|
|
517
|
+
/* The current row's select cell is an empty alignment spacer - no pointer. */
|
|
518
|
+
.jp-ClaudeSessionsPanel-branchRow.jp-mod-current
|
|
519
|
+
.jp-ClaudeSessionsPanel-branchSelectCell {
|
|
520
|
+
cursor: default;
|
|
448
521
|
}
|
|
449
522
|
|
|
450
523
|
.jp-ClaudeSessionsPanel-branchCurrentBadge {
|
|
451
524
|
flex: none;
|
|
452
525
|
padding: 0 6px;
|
|
453
|
-
border: 1px solid var(--jp-
|
|
526
|
+
border: 1px solid var(--jp-brand-color1);
|
|
454
527
|
border-radius: 8px;
|
|
455
|
-
color: var(--jp-
|
|
528
|
+
color: var(--jp-brand-color1);
|
|
456
529
|
font-size: var(--jp-ui-font-size0);
|
|
530
|
+
font-weight: 600;
|
|
531
|
+
text-transform: uppercase;
|
|
532
|
+
letter-spacing: 0.5px;
|
|
457
533
|
}
|
|
458
534
|
|
|
459
535
|
.jp-ClaudeSessionsPanel-branchSelectAll {
|
|
@@ -474,27 +550,53 @@
|
|
|
474
550
|
|
|
475
551
|
.jp-ClaudeSessionsPanel-branchFooter {
|
|
476
552
|
display: flex;
|
|
477
|
-
|
|
553
|
+
align-items: center;
|
|
554
|
+
justify-content: space-between;
|
|
555
|
+
}
|
|
556
|
+
|
|
557
|
+
.jp-ClaudeSessionsPanel-branchSelCount {
|
|
558
|
+
color: var(--jp-ui-font-color2);
|
|
559
|
+
font-size: var(--jp-ui-font-size0);
|
|
560
|
+
}
|
|
561
|
+
|
|
562
|
+
/* The post-delete "N moved to trash" feedback reads at full strength - it is
|
|
563
|
+
the recoverability cue that stands in for a confirmation prompt. */
|
|
564
|
+
.jp-ClaudeSessionsPanel-branchSelCount.jp-mod-deleted {
|
|
565
|
+
color: var(--jp-ui-font-color1);
|
|
566
|
+
}
|
|
567
|
+
|
|
568
|
+
/* While a delete is in flight the whole body is scrimmed so a mid-flight tick,
|
|
569
|
+
a select-all, a search or a second delete cannot race the async refetch. The
|
|
570
|
+
Dialog's Cancel button is outside the body and stays usable. */
|
|
571
|
+
.jp-ClaudeSessionsPanel-branchPopup.jp-mod-busy {
|
|
572
|
+
pointer-events: none;
|
|
573
|
+
opacity: 0.6;
|
|
478
574
|
}
|
|
479
575
|
|
|
576
|
+
/* Destructive: deletes immediately (no confirmation), so it reads in the
|
|
577
|
+
error colour and fills on hover. */
|
|
480
578
|
.jp-ClaudeSessionsPanel-branchDelete {
|
|
481
579
|
padding: 2px 8px;
|
|
482
|
-
border: 1px solid var(--jp-
|
|
580
|
+
border: 1px solid var(--jp-error-color1);
|
|
483
581
|
border-radius: 2px;
|
|
484
582
|
background: var(--jp-layout-color1);
|
|
485
|
-
color: var(--jp-
|
|
583
|
+
color: var(--jp-error-color1);
|
|
486
584
|
cursor: pointer;
|
|
585
|
+
transition:
|
|
586
|
+
background 120ms ease,
|
|
587
|
+
color 120ms ease;
|
|
487
588
|
}
|
|
488
589
|
|
|
489
590
|
.jp-ClaudeSessionsPanel-branchDelete:disabled {
|
|
490
591
|
opacity: 0.5;
|
|
491
592
|
cursor: default;
|
|
593
|
+
border-color: var(--jp-border-color1);
|
|
594
|
+
color: var(--jp-ui-font-color2);
|
|
492
595
|
}
|
|
493
596
|
|
|
494
|
-
|
|
495
|
-
|
|
496
|
-
|
|
497
|
-
color: var(--jp-error-color1);
|
|
597
|
+
.jp-ClaudeSessionsPanel-branchDelete:hover:not(:disabled) {
|
|
598
|
+
background: var(--jp-error-color1);
|
|
599
|
+
color: var(--jp-ui-inverse-font-color1, #fff);
|
|
498
600
|
}
|
|
499
601
|
|
|
500
602
|
/* Last-activity time on session rows - dim, fixed-width right-aligned
|