jupyterlab_claude_code_extension 1.2.34 → 1.2.36
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/package.json +1 -1
- package/style/base.css +128 -51
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "jupyterlab_claude_code_extension",
|
|
3
|
-
"version": "1.2.
|
|
3
|
+
"version": "1.2.36",
|
|
4
4
|
"description": "Browse, resume, and manage your Claude Code CLI sessions from a JupyterLab side panel. One click reactivates the right terminal - no duplicate tabs, live remote-control indicator, and favourites for the projects you keep coming back to.",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"jupyter",
|
package/style/base.css
CHANGED
|
@@ -242,7 +242,10 @@
|
|
|
242
242
|
justify-content: center;
|
|
243
243
|
width: 14px;
|
|
244
244
|
height: 14px;
|
|
245
|
-
|
|
245
|
+
|
|
246
|
+
/* Dim the standard jp-icon3 star so the favourite marker is quiet, not an
|
|
247
|
+
alarm - lowers its visual weight against the row text. */
|
|
248
|
+
opacity: 0.5;
|
|
246
249
|
}
|
|
247
250
|
|
|
248
251
|
.jp-ClaudeSessionsPanel-favStar svg {
|
|
@@ -352,32 +355,71 @@
|
|
|
352
355
|
margin: 0 auto;
|
|
353
356
|
}
|
|
354
357
|
|
|
355
|
-
/*
|
|
358
|
+
/* ============================================================
|
|
359
|
+
Sessions Management popup - Duoptimum Hub design language,
|
|
360
|
+
driven entirely by JupyterLab theme variables so a theme flip
|
|
361
|
+
(light / dark / custom) restyles the whole screen at once. The
|
|
362
|
+
--ccs-* tokens map the design system onto --jp-* vars: the look
|
|
363
|
+
is the design language, the colours are the current theme.
|
|
364
|
+
============================================================ */
|
|
356
365
|
.jp-ClaudeSessionsPanel-branchPopup {
|
|
366
|
+
--ccs-radius-sm: 4px;
|
|
367
|
+
--ccs-radius: 6px;
|
|
368
|
+
--ccs-radius-lg: 8px;
|
|
369
|
+
--ccs-surface: var(--jp-layout-color1);
|
|
370
|
+
--ccs-surface-hover: var(--jp-layout-color2);
|
|
371
|
+
--ccs-border: var(--jp-border-color2);
|
|
372
|
+
--ccs-border-subtle: var(--jp-border-color3);
|
|
373
|
+
--ccs-text: var(--jp-ui-font-color1);
|
|
374
|
+
--ccs-text-muted: var(--jp-ui-font-color2);
|
|
375
|
+
|
|
376
|
+
/* font-color3 is the disabled/hint level - too dim for content in some themes
|
|
377
|
+
(e.g. Stellars Dark renders it ~#5a5a5a, near-invisible on the surface), so
|
|
378
|
+
readable secondary labels (times, "current", counts) stay at font-color2. */
|
|
379
|
+
--ccs-text-subtle: var(--jp-ui-font-color2);
|
|
380
|
+
--ccs-accent: var(--jp-brand-color1);
|
|
381
|
+
--ccs-accent-soft: color-mix(
|
|
382
|
+
in srgb,
|
|
383
|
+
var(--jp-brand-color1) 14%,
|
|
384
|
+
transparent
|
|
385
|
+
);
|
|
386
|
+
--ccs-danger: var(--jp-error-color1);
|
|
387
|
+
--ccs-danger-soft: color-mix(
|
|
388
|
+
in srgb,
|
|
389
|
+
var(--jp-error-color1) 15%,
|
|
390
|
+
transparent
|
|
391
|
+
);
|
|
392
|
+
|
|
357
393
|
display: flex;
|
|
358
394
|
flex-direction: column;
|
|
359
|
-
gap:
|
|
360
|
-
min-width:
|
|
395
|
+
gap: 10px;
|
|
396
|
+
min-width: 360px;
|
|
361
397
|
}
|
|
362
398
|
|
|
399
|
+
/* Design-language text input: 6px radius, accent focus ring. */
|
|
363
400
|
.jp-ClaudeSessionsPanel-branchSearch {
|
|
364
401
|
width: 100%;
|
|
365
402
|
box-sizing: border-box;
|
|
366
|
-
|
|
367
|
-
|
|
368
|
-
|
|
369
|
-
|
|
370
|
-
border
|
|
403
|
+
height: 30px;
|
|
404
|
+
padding: 0 11px;
|
|
405
|
+
background: var(--ccs-surface);
|
|
406
|
+
color: var(--ccs-text);
|
|
407
|
+
border: 1px solid var(--ccs-border);
|
|
408
|
+
border-radius: var(--ccs-radius);
|
|
371
409
|
font-family: inherit;
|
|
372
410
|
font-size: var(--jp-ui-font-size1);
|
|
373
411
|
outline: none;
|
|
412
|
+
transition:
|
|
413
|
+
border-color 120ms ease,
|
|
414
|
+
box-shadow 120ms ease;
|
|
374
415
|
}
|
|
375
416
|
|
|
376
417
|
.jp-ClaudeSessionsPanel-branchSearch:focus {
|
|
377
|
-
border-color: var(--
|
|
418
|
+
border-color: var(--ccs-accent);
|
|
419
|
+
box-shadow: 0 0 0 3px var(--ccs-accent-soft);
|
|
378
420
|
}
|
|
379
421
|
|
|
380
|
-
/*
|
|
422
|
+
/* Header strip above the list - select-all left, count right. */
|
|
381
423
|
.jp-ClaudeSessionsPanel-branchHeader {
|
|
382
424
|
display: flex;
|
|
383
425
|
align-items: center;
|
|
@@ -386,8 +428,9 @@
|
|
|
386
428
|
}
|
|
387
429
|
|
|
388
430
|
.jp-ClaudeSessionsPanel-branchHeaderCount {
|
|
389
|
-
color: var(--
|
|
431
|
+
color: var(--ccs-text-subtle);
|
|
390
432
|
font-size: var(--jp-ui-font-size0);
|
|
433
|
+
font-variant-numeric: tabular-nums;
|
|
391
434
|
}
|
|
392
435
|
|
|
393
436
|
/* Fixed-width first column so the checkbox (branch rows) and the empty cell
|
|
@@ -402,12 +445,15 @@
|
|
|
402
445
|
cursor: pointer;
|
|
403
446
|
}
|
|
404
447
|
|
|
448
|
+
/* The list is a surface card; rows are flush and hairline-separated. The
|
|
449
|
+
rounded corners clip the row hover fills (overflow-y establishes the clip). */
|
|
405
450
|
.jp-ClaudeSessionsPanel-branchList {
|
|
406
|
-
max-height:
|
|
451
|
+
max-height: 300px;
|
|
407
452
|
overflow-y: auto;
|
|
408
453
|
position: relative;
|
|
409
|
-
|
|
410
|
-
border
|
|
454
|
+
background: var(--ccs-surface);
|
|
455
|
+
border: 1px solid var(--ccs-border);
|
|
456
|
+
border-radius: var(--ccs-radius-lg);
|
|
411
457
|
}
|
|
412
458
|
|
|
413
459
|
/* Visually-hidden polite live region (delete announcements). */
|
|
@@ -427,17 +473,20 @@
|
|
|
427
473
|
display: flex;
|
|
428
474
|
align-items: center;
|
|
429
475
|
justify-content: space-between;
|
|
430
|
-
gap:
|
|
431
|
-
height:
|
|
432
|
-
|
|
433
|
-
padding: 0 8px;
|
|
476
|
+
gap: 10px;
|
|
477
|
+
height: 30px;
|
|
478
|
+
padding: 0 10px;
|
|
434
479
|
cursor: pointer;
|
|
435
|
-
border-
|
|
480
|
+
border-bottom: 1px solid var(--ccs-border-subtle);
|
|
436
481
|
font-size: var(--jp-ui-font-size1);
|
|
437
482
|
}
|
|
438
483
|
|
|
484
|
+
.jp-ClaudeSessionsPanel-branchRow:last-child {
|
|
485
|
+
border-bottom: none;
|
|
486
|
+
}
|
|
487
|
+
|
|
439
488
|
.jp-ClaudeSessionsPanel-branchRow:hover {
|
|
440
|
-
background: var(--
|
|
489
|
+
background: var(--ccs-surface-hover);
|
|
441
490
|
}
|
|
442
491
|
|
|
443
492
|
.jp-ClaudeSessionsPanel-branchLabel {
|
|
@@ -446,35 +495,49 @@
|
|
|
446
495
|
overflow: hidden;
|
|
447
496
|
text-overflow: ellipsis;
|
|
448
497
|
white-space: nowrap;
|
|
498
|
+
color: var(--ccs-text);
|
|
449
499
|
}
|
|
450
500
|
|
|
501
|
+
/* Copy id - design-language action icon: wireframe by default, hovers to a
|
|
502
|
+
surface tint. Square 24px hit target keeps it aligned in the row. */
|
|
451
503
|
.jp-ClaudeSessionsPanel-branchCopy {
|
|
452
504
|
flex: none;
|
|
453
|
-
|
|
454
|
-
|
|
505
|
+
width: 24px;
|
|
506
|
+
height: 24px;
|
|
507
|
+
display: inline-grid;
|
|
508
|
+
place-items: center;
|
|
455
509
|
padding: 0;
|
|
456
510
|
border: none;
|
|
511
|
+
border-radius: var(--ccs-radius-sm);
|
|
457
512
|
background: transparent;
|
|
458
|
-
color: var(--
|
|
513
|
+
color: var(--ccs-text-subtle);
|
|
459
514
|
cursor: pointer;
|
|
515
|
+
transition:
|
|
516
|
+
background 120ms ease,
|
|
517
|
+
color 120ms ease;
|
|
460
518
|
}
|
|
461
519
|
|
|
462
520
|
.jp-ClaudeSessionsPanel-branchCopy:hover {
|
|
463
|
-
|
|
521
|
+
background: var(--ccs-surface-hover);
|
|
522
|
+
color: var(--ccs-text);
|
|
464
523
|
}
|
|
465
524
|
|
|
466
|
-
/* Per-row "Open" launches the conversation in its own terminal.
|
|
467
|
-
|
|
525
|
+
/* Per-row "Open" launches the conversation in its own terminal. Design-language
|
|
526
|
+
list button: outlined accent, fills to the accent on hover (6px radius). */
|
|
468
527
|
.jp-ClaudeSessionsPanel-branchOpen {
|
|
469
528
|
flex: none;
|
|
470
|
-
|
|
529
|
+
height: 24px;
|
|
530
|
+
padding: 0 10px;
|
|
471
531
|
border: 1px solid var(--jp-brand-color1);
|
|
472
|
-
border-radius:
|
|
532
|
+
border-radius: var(--ccs-radius);
|
|
473
533
|
background: transparent;
|
|
474
534
|
color: var(--jp-brand-color1);
|
|
475
535
|
font-size: var(--jp-ui-font-size0);
|
|
536
|
+
font-weight: 500;
|
|
476
537
|
cursor: pointer;
|
|
477
|
-
transition:
|
|
538
|
+
transition:
|
|
539
|
+
background 120ms ease,
|
|
540
|
+
color 120ms ease;
|
|
478
541
|
}
|
|
479
542
|
|
|
480
543
|
.jp-ClaudeSessionsPanel-branchOpen:hover {
|
|
@@ -487,31 +550,33 @@
|
|
|
487
550
|
width: 4em;
|
|
488
551
|
white-space: nowrap;
|
|
489
552
|
text-align: right;
|
|
490
|
-
color: var(--
|
|
553
|
+
color: var(--ccs-text-subtle);
|
|
491
554
|
font-size: var(--jp-ui-font-size0);
|
|
555
|
+
font-variant-numeric: tabular-nums;
|
|
492
556
|
}
|
|
493
557
|
|
|
494
558
|
.jp-ClaudeSessionsPanel-branchRow input[type='checkbox'] {
|
|
495
559
|
flex: none;
|
|
496
560
|
margin: 0;
|
|
497
561
|
cursor: pointer;
|
|
562
|
+
accent-color: var(--jp-brand-color1);
|
|
498
563
|
}
|
|
499
564
|
|
|
500
565
|
/* The current conversation is pinned at the top of the scroll area and
|
|
501
|
-
accented (brand left-bar + tint
|
|
502
|
-
|
|
566
|
+
accented (brand left-bar + soft tint, the design-language left-edge accent)
|
|
567
|
+
so it reads as the active one - not dimmed; not selectable or deletable. */
|
|
503
568
|
.jp-ClaudeSessionsPanel-branchRow.jp-mod-current {
|
|
504
569
|
position: sticky;
|
|
505
570
|
top: 0;
|
|
506
571
|
z-index: 1;
|
|
507
572
|
cursor: default;
|
|
508
|
-
background: var(--
|
|
573
|
+
background: var(--ccs-surface-hover);
|
|
509
574
|
border-left: 3px solid var(--jp-brand-color1);
|
|
510
|
-
padding-left:
|
|
575
|
+
padding-left: 7px;
|
|
511
576
|
}
|
|
512
577
|
|
|
513
578
|
.jp-ClaudeSessionsPanel-branchRow.jp-mod-current:hover {
|
|
514
|
-
background: var(--
|
|
579
|
+
background: var(--ccs-surface-hover);
|
|
515
580
|
}
|
|
516
581
|
|
|
517
582
|
/* The current row's select cell is an empty alignment spacer - no pointer. */
|
|
@@ -520,10 +585,11 @@
|
|
|
520
585
|
cursor: default;
|
|
521
586
|
}
|
|
522
587
|
|
|
588
|
+
/* Plain, understated "current" marker - deliberately not a loud chip. */
|
|
523
589
|
.jp-ClaudeSessionsPanel-branchCurrentBadge {
|
|
524
590
|
flex: none;
|
|
525
591
|
white-space: nowrap;
|
|
526
|
-
color: var(--
|
|
592
|
+
color: var(--ccs-text-subtle);
|
|
527
593
|
font-size: var(--jp-ui-font-size0);
|
|
528
594
|
}
|
|
529
595
|
|
|
@@ -531,9 +597,9 @@
|
|
|
531
597
|
display: flex;
|
|
532
598
|
align-items: center;
|
|
533
599
|
gap: 8px;
|
|
534
|
-
padding: 0
|
|
600
|
+
padding: 0 2px;
|
|
535
601
|
cursor: pointer;
|
|
536
|
-
color: var(--
|
|
602
|
+
color: var(--ccs-text-subtle);
|
|
537
603
|
font-size: var(--jp-ui-font-size0);
|
|
538
604
|
user-select: none;
|
|
539
605
|
}
|
|
@@ -541,23 +607,26 @@
|
|
|
541
607
|
.jp-ClaudeSessionsPanel-branchSelectAll input[type='checkbox'] {
|
|
542
608
|
margin: 0;
|
|
543
609
|
cursor: pointer;
|
|
610
|
+
accent-color: var(--jp-brand-color1);
|
|
544
611
|
}
|
|
545
612
|
|
|
546
613
|
.jp-ClaudeSessionsPanel-branchFooter {
|
|
547
614
|
display: flex;
|
|
548
615
|
align-items: center;
|
|
549
616
|
justify-content: space-between;
|
|
617
|
+
min-height: 26px;
|
|
550
618
|
}
|
|
551
619
|
|
|
552
620
|
.jp-ClaudeSessionsPanel-branchSelCount {
|
|
553
|
-
color: var(--
|
|
621
|
+
color: var(--ccs-text-subtle);
|
|
554
622
|
font-size: var(--jp-ui-font-size0);
|
|
623
|
+
font-variant-numeric: tabular-nums;
|
|
555
624
|
}
|
|
556
625
|
|
|
557
626
|
/* The post-delete "N moved to trash" feedback reads at full strength - it is
|
|
558
627
|
the recoverability cue that stands in for a confirmation prompt. */
|
|
559
628
|
.jp-ClaudeSessionsPanel-branchSelCount.jp-mod-deleted {
|
|
560
|
-
color: var(--
|
|
629
|
+
color: var(--ccs-text);
|
|
561
630
|
}
|
|
562
631
|
|
|
563
632
|
/* While a delete is in flight the whole body is scrimmed so a mid-flight tick,
|
|
@@ -568,30 +637,38 @@
|
|
|
568
637
|
opacity: 0.6;
|
|
569
638
|
}
|
|
570
639
|
|
|
571
|
-
/* Destructive: deletes immediately (no confirmation)
|
|
572
|
-
|
|
640
|
+
/* Destructive: deletes immediately (no confirmation). Design-language
|
|
641
|
+
list-danger button - always an OUTLINE, never a filled primary: a dim,
|
|
642
|
+
inactive outline while nothing is selected, a lit error outline once a
|
|
643
|
+
selection arms it, and only a soft error tint on hover (6px radius). */
|
|
573
644
|
.jp-ClaudeSessionsPanel-branchDelete {
|
|
574
|
-
|
|
645
|
+
height: 26px;
|
|
646
|
+
padding: 0 12px;
|
|
575
647
|
border: 1px solid var(--jp-error-color1);
|
|
576
|
-
border-radius:
|
|
577
|
-
background:
|
|
648
|
+
border-radius: var(--ccs-radius);
|
|
649
|
+
background: transparent;
|
|
578
650
|
color: var(--jp-error-color1);
|
|
651
|
+
font-size: var(--jp-ui-font-size0);
|
|
652
|
+
font-weight: 500;
|
|
579
653
|
cursor: pointer;
|
|
580
654
|
transition:
|
|
581
655
|
background 120ms ease,
|
|
656
|
+
border-color 120ms ease,
|
|
582
657
|
color 120ms ease;
|
|
583
658
|
}
|
|
584
659
|
|
|
660
|
+
/* Disabled = inactive outline: theme border + muted text, plainly not primary
|
|
661
|
+
and not actionable, but still legible (no wash-out). */
|
|
585
662
|
.jp-ClaudeSessionsPanel-branchDelete:disabled {
|
|
586
|
-
opacity: 0.5;
|
|
587
663
|
cursor: default;
|
|
588
|
-
border-color: var(--
|
|
589
|
-
color: var(--
|
|
664
|
+
border-color: var(--ccs-border);
|
|
665
|
+
color: var(--ccs-text-muted);
|
|
590
666
|
}
|
|
591
667
|
|
|
668
|
+
/* Hover while armed stays an outline - a soft error tint, not a solid fill. */
|
|
592
669
|
.jp-ClaudeSessionsPanel-branchDelete:hover:not(:disabled) {
|
|
593
|
-
background: var(--
|
|
594
|
-
color: var(--jp-
|
|
670
|
+
background: var(--ccs-danger-soft);
|
|
671
|
+
color: var(--jp-error-color1);
|
|
595
672
|
}
|
|
596
673
|
|
|
597
674
|
/* Last-activity time on session rows - dim, fixed-width right-aligned
|