jupyterlab_claude_code_extension 1.0.53 → 1.0.54
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 -2
- package/lib/index.js +1 -1
- package/lib/widget.js +6 -6
- package/package.json +1 -1
- package/src/__tests__/jupyterlab_claude_code_extension.spec.ts +1 -0
- package/src/index.ts +1 -1
- package/src/widget.ts +6 -6
- package/style/base.css +6 -3
package/README.md
CHANGED
|
@@ -14,10 +14,10 @@ Browse, resume, and manage your Claude Code sessions from a JupyterLab side pane
|
|
|
14
14
|
|
|
15
15
|
## Features
|
|
16
16
|
|
|
17
|
-
- **Three-section side panel** -
|
|
17
|
+
- **Three-section side panel** - Favorites, Recent, and All projects, each scrolling independently
|
|
18
18
|
- **Live indicator** - a green dot marks sessions that are currently running somewhere
|
|
19
19
|
- **One-click resume** - click a row to jump back into that session in a terminal. If a terminal for the project is already open, it's reused instead of duplicated
|
|
20
|
-
- **
|
|
20
|
+
- **Favorites** - star projects you keep coming back to via the right-click menu
|
|
21
21
|
- **Search** - fuzzy filter at the top of the panel
|
|
22
22
|
- **Presentation modes** - label rows by session name, folder name, or path relative to the JupyterLab root
|
|
23
23
|
- **Hover tooltip** with project path, last activity, message count, branch, and session id
|
package/lib/index.js
CHANGED
|
@@ -7,7 +7,7 @@ const PLUGIN_ID = 'jupyterlab_claude_code_extension:plugin';
|
|
|
7
7
|
const WIDGET_ID = 'jupyterlab-claude-code-extension';
|
|
8
8
|
const plugin = {
|
|
9
9
|
id: PLUGIN_ID,
|
|
10
|
-
description: 'Side panel listing Claude Code sessions per project folder, with remote-control indicator,
|
|
10
|
+
description: 'Side panel listing Claude Code sessions per project folder, with remote-control indicator, favorites, and one-click resume in a terminal.',
|
|
11
11
|
autoStart: true,
|
|
12
12
|
requires: [ILabShell],
|
|
13
13
|
optional: [ILayoutRestorer, ISettingRegistry, ITerminalTracker],
|
package/lib/widget.js
CHANGED
|
@@ -8,7 +8,7 @@ const DEFAULT_RECENT_LIMIT = 10;
|
|
|
8
8
|
const EXPANDED_STORAGE_KEY = 'jupyterlab_claude_code_extension:expanded';
|
|
9
9
|
const DEFAULT_PRESENTATION_MODE = 'session';
|
|
10
10
|
const SECTION_LABELS = {
|
|
11
|
-
favourites: '
|
|
11
|
+
favourites: 'Favorites',
|
|
12
12
|
recent: 'Recent',
|
|
13
13
|
all: 'All'
|
|
14
14
|
};
|
|
@@ -607,7 +607,7 @@ export class ClaudeCodeSessionsWidget extends Widget {
|
|
|
607
607
|
const empty = document.createElement('div');
|
|
608
608
|
empty.className = 'jp-ClaudeSessionsPanel-emptySection';
|
|
609
609
|
empty.textContent =
|
|
610
|
-
key === 'favourites' ? 'No
|
|
610
|
+
key === 'favourites' ? 'No favorites yet.' : 'Empty.';
|
|
611
611
|
list.appendChild(empty);
|
|
612
612
|
}
|
|
613
613
|
else {
|
|
@@ -648,12 +648,12 @@ export class ClaudeCodeSessionsWidget extends Widget {
|
|
|
648
648
|
name.className = 'jp-ClaudeSessionsPanel-name';
|
|
649
649
|
name.textContent = this._lookupName(session);
|
|
650
650
|
row.appendChild(name);
|
|
651
|
-
// No star in the
|
|
651
|
+
// No star in the Favorites section - every row there is a favorite
|
|
652
652
|
// by definition; stars are an indicator only useful in Recent/All.
|
|
653
653
|
if (session.favourite && sectionKey !== 'favourites') {
|
|
654
654
|
const star = document.createElement('span');
|
|
655
655
|
star.className = 'jp-ClaudeSessionsPanel-favStar';
|
|
656
|
-
star.title = '
|
|
656
|
+
star.title = 'Favorite';
|
|
657
657
|
starFilledIcon.element({ container: star });
|
|
658
658
|
row.appendChild(star);
|
|
659
659
|
}
|
|
@@ -751,8 +751,8 @@ export class ClaudeCodeSessionsWidget extends Widget {
|
|
|
751
751
|
label: () => {
|
|
752
752
|
var _a;
|
|
753
753
|
return ((_a = this._activeSession) === null || _a === void 0 ? void 0 : _a.favourite)
|
|
754
|
-
? 'Remove from
|
|
755
|
-
: 'Add to
|
|
754
|
+
? 'Remove from Favorites'
|
|
755
|
+
: 'Add to Favorites';
|
|
756
756
|
},
|
|
757
757
|
execute: () => {
|
|
758
758
|
if (this._activeSession) {
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "jupyterlab_claude_code_extension",
|
|
3
|
-
"version": "1.0.
|
|
3
|
+
"version": "1.0.54",
|
|
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/src/index.ts
CHANGED
|
@@ -17,7 +17,7 @@ const WIDGET_ID = 'jupyterlab-claude-code-extension';
|
|
|
17
17
|
const plugin: JupyterFrontEndPlugin<void> = {
|
|
18
18
|
id: PLUGIN_ID,
|
|
19
19
|
description:
|
|
20
|
-
'Side panel listing Claude Code sessions per project folder, with remote-control indicator,
|
|
20
|
+
'Side panel listing Claude Code sessions per project folder, with remote-control indicator, favorites, and one-click resume in a terminal.',
|
|
21
21
|
autoStart: true,
|
|
22
22
|
requires: [ILabShell],
|
|
23
23
|
optional: [ILayoutRestorer, ISettingRegistry, ITerminalTracker],
|
package/src/widget.ts
CHANGED
|
@@ -33,7 +33,7 @@ export type PresentationMode = 'session' | 'folder' | 'path';
|
|
|
33
33
|
const DEFAULT_PRESENTATION_MODE: PresentationMode = 'session';
|
|
34
34
|
|
|
35
35
|
const SECTION_LABELS: Record<SectionKey, string> = {
|
|
36
|
-
favourites: '
|
|
36
|
+
favourites: 'Favorites',
|
|
37
37
|
recent: 'Recent',
|
|
38
38
|
all: 'All'
|
|
39
39
|
};
|
|
@@ -724,7 +724,7 @@ export class ClaudeCodeSessionsWidget extends Widget {
|
|
|
724
724
|
const empty = document.createElement('div');
|
|
725
725
|
empty.className = 'jp-ClaudeSessionsPanel-emptySection';
|
|
726
726
|
empty.textContent =
|
|
727
|
-
key === 'favourites' ? 'No
|
|
727
|
+
key === 'favourites' ? 'No favorites yet.' : 'Empty.';
|
|
728
728
|
list.appendChild(empty);
|
|
729
729
|
} else {
|
|
730
730
|
for (const item of items) {
|
|
@@ -771,12 +771,12 @@ export class ClaudeCodeSessionsWidget extends Widget {
|
|
|
771
771
|
name.textContent = this._lookupName(session);
|
|
772
772
|
row.appendChild(name);
|
|
773
773
|
|
|
774
|
-
// No star in the
|
|
774
|
+
// No star in the Favorites section - every row there is a favorite
|
|
775
775
|
// by definition; stars are an indicator only useful in Recent/All.
|
|
776
776
|
if (session.favourite && sectionKey !== 'favourites') {
|
|
777
777
|
const star = document.createElement('span');
|
|
778
778
|
star.className = 'jp-ClaudeSessionsPanel-favStar';
|
|
779
|
-
star.title = '
|
|
779
|
+
star.title = 'Favorite';
|
|
780
780
|
starFilledIcon.element({ container: star });
|
|
781
781
|
row.appendChild(star);
|
|
782
782
|
}
|
|
@@ -883,8 +883,8 @@ export class ClaudeCodeSessionsWidget extends Widget {
|
|
|
883
883
|
this._commands.addCommand('claude-code-sessions:toggle-favourite', {
|
|
884
884
|
label: () =>
|
|
885
885
|
this._activeSession?.favourite
|
|
886
|
-
? 'Remove from
|
|
887
|
-
: 'Add to
|
|
886
|
+
? 'Remove from Favorites'
|
|
887
|
+
: 'Add to Favorites',
|
|
888
888
|
execute: () => {
|
|
889
889
|
if (this._activeSession) {
|
|
890
890
|
void this._toggleFavourite(this._activeSession);
|
package/style/base.css
CHANGED
|
@@ -24,13 +24,16 @@
|
|
|
24
24
|
min-height: 24px;
|
|
25
25
|
}
|
|
26
26
|
|
|
27
|
+
/* The panel title and section headers mirror the file browser's headers
|
|
28
|
+
(jp-Favorites-header / jp-FileBrowser-header) so the sidebar reads
|
|
29
|
+
uniformly: 600 weight, uppercase, ui-font-size0, 1px tracking. */
|
|
27
30
|
.jp-ClaudeSessionsPanel-title {
|
|
28
31
|
flex: 1 1 auto;
|
|
29
32
|
font-weight: 600;
|
|
30
|
-
letter-spacing:
|
|
33
|
+
letter-spacing: 1px;
|
|
31
34
|
text-transform: uppercase;
|
|
32
35
|
font-size: var(--jp-ui-font-size0);
|
|
33
|
-
color: var(--jp-ui-font-
|
|
36
|
+
color: var(--jp-ui-font-color1);
|
|
34
37
|
}
|
|
35
38
|
|
|
36
39
|
.jp-ClaudeSessionsPanel-iconButton {
|
|
@@ -123,7 +126,7 @@
|
|
|
123
126
|
font-family: inherit;
|
|
124
127
|
font-size: var(--jp-ui-font-size0);
|
|
125
128
|
font-weight: 600;
|
|
126
|
-
letter-spacing:
|
|
129
|
+
letter-spacing: 1px;
|
|
127
130
|
text-transform: uppercase;
|
|
128
131
|
}
|
|
129
132
|
|