xtralab 0.15.0 → 0.15.1
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 +10 -0
- package/lib/about/icons.d.ts +0 -5
- package/lib/about/icons.js +0 -5
- package/lib/about/index.d.ts +4 -8
- package/lib/about/index.js +6 -17
- package/lib/agentSessions.d.ts +9 -29
- package/lib/agentSessions.js +2 -7
- package/lib/askAgent/editorSelection.d.ts +20 -26
- package/lib/askAgent/editorSelection.js +11 -26
- package/lib/askAgent/icons.d.ts +2 -3
- package/lib/askAgent/icons.js +2 -3
- package/lib/askAgent/index.d.ts +4 -26
- package/lib/askAgent/index.js +54 -158
- package/lib/askAgent/popup.d.ts +12 -16
- package/lib/askAgent/popup.js +18 -37
- package/lib/askAgent/prompt.d.ts +3 -5
- package/lib/askAgent/prompt.js +6 -19
- package/lib/askAgent/queue.d.ts +11 -21
- package/lib/askAgent/queue.js +9 -19
- package/lib/askAgent/queuePanel.d.ts +13 -18
- package/lib/askAgent/queuePanel.js +15 -37
- package/lib/askAgent/targetPicker.d.ts +2 -9
- package/lib/askAgent/targetPicker.js +6 -11
- package/lib/askAgent/tokens.d.ts +32 -46
- package/lib/askAgent/tokens.js +4 -6
- package/lib/commandBar/index.d.ts +4 -13
- package/lib/commandBar/index.js +21 -39
- package/lib/customPanel/index.js +15 -0
- package/lib/editorBreadcrumbs/index.d.ts +3 -6
- package/lib/editorBreadcrumbs/index.js +10 -6
- package/lib/editorBreadcrumbs/widget.d.ts +17 -4
- package/lib/editorBreadcrumbs/widget.js +11 -17
- package/lib/editorIndent/index.d.ts +4 -12
- package/lib/editorIndent/index.js +8 -23
- package/lib/fileBrowser/commands.d.ts +28 -19
- package/lib/fileBrowser/commands.js +39 -98
- package/lib/fileBrowser/contents.d.ts +3 -0
- package/lib/fileBrowser/dragAndDrop.d.ts +17 -4
- package/lib/fileBrowser/dragAndDrop.js +2 -7
- package/lib/fileBrowser/fileBrowser.d.ts +19 -9
- package/lib/fileBrowser/fileBrowser.js +68 -216
- package/lib/fileBrowser/gitStatus.d.ts +4 -9
- package/lib/fileBrowser/gitStatus.js +7 -17
- package/lib/fileBrowser/gitignore.d.ts +4 -17
- package/lib/fileBrowser/gitignore.js +4 -25
- package/lib/fileBrowser/icons.d.ts +7 -17
- package/lib/fileBrowser/icons.js +25 -80
- package/lib/fileBrowser/index.js +2 -4
- package/lib/fileBrowser/widget.d.ts +126 -48
- package/lib/fileBrowser/widget.js +89 -4
- package/lib/fileTypeIcons/index.js +0 -10
- package/lib/git/api.d.ts +5 -13
- package/lib/git/api.js +10 -36
- package/lib/git/askRequest.d.ts +4 -8
- package/lib/git/askRequest.js +6 -20
- package/lib/git/commands.d.ts +40 -5
- package/lib/git/commands.js +16 -10
- package/lib/git/diffModel.js +4 -0
- package/lib/git/diffSurface.d.ts +41 -55
- package/lib/git/diffSurface.js +42 -117
- package/lib/git/diffWidget.d.ts +81 -2
- package/lib/git/diffWidget.js +62 -12
- package/lib/git/imageDiff.d.ts +5 -6
- package/lib/git/imageDiff.js +18 -48
- package/lib/git/index.d.ts +0 -3
- package/lib/git/index.js +3 -8
- package/lib/git/notebookDiff.d.ts +110 -33
- package/lib/git/notebookDiff.js +52 -195
- package/lib/git/tokens.d.ts +73 -31
- package/lib/git/tokens.js +2 -3
- package/lib/highlight/index.d.ts +4 -10
- package/lib/highlight/index.js +10 -41
- package/lib/index.d.ts +0 -9
- package/lib/index.js +0 -9
- package/lib/launcher/agents.d.ts +55 -51
- package/lib/launcher/agents.js +15 -57
- package/lib/launcher/availability.d.ts +3 -9
- package/lib/launcher/availability.js +3 -9
- package/lib/launcher/commands.d.ts +7 -32
- package/lib/launcher/commands.js +14 -45
- package/lib/launcher/dashboard.d.ts +19 -24
- package/lib/launcher/dashboard.js +21 -67
- package/lib/launcher/editorRegistry.d.ts +10 -22
- package/lib/launcher/editorRegistry.js +14 -18
- package/lib/launcher/editors.d.ts +39 -45
- package/lib/launcher/editors.js +8 -34
- package/lib/launcher/icons.d.ts +0 -12
- package/lib/launcher/icons.js +5 -39
- package/lib/launcher/index.js +12 -55
- package/lib/launcher/invocation.d.ts +4 -10
- package/lib/launcher/invocation.js +7 -22
- package/lib/launcher/registry.d.ts +9 -7
- package/lib/launcher/registry.js +9 -7
- package/lib/launcher/tokens.d.ts +10 -22
- package/lib/launcher/tokens.js +5 -8
- package/lib/menuBar/index.d.ts +3 -10
- package/lib/menuBar/index.js +11 -28
- package/lib/menus/index.d.ts +3 -9
- package/lib/menus/index.js +14 -30
- package/lib/omnibox/files.d.ts +2 -4
- package/lib/omnibox/files.js +5 -11
- package/lib/omnibox/index.d.ts +4 -14
- package/lib/omnibox/index.js +9 -27
- package/lib/omnibox/model.d.ts +38 -10
- package/lib/omnibox/model.js +15 -33
- package/lib/omnibox/recents.d.ts +15 -17
- package/lib/omnibox/recents.js +12 -17
- package/lib/omnibox/tokens.d.ts +5 -10
- package/lib/omnibox/tokens.js +2 -6
- package/lib/omnibox/widget.d.ts +11 -7
- package/lib/omnibox/widget.js +8 -16
- package/lib/searchReplace/index.d.ts +4 -20
- package/lib/searchReplace/index.js +7 -27
- package/lib/showOutput/index.d.ts +3 -12
- package/lib/showOutput/index.js +6 -22
- package/lib/sidebar/index.d.ts +4 -7
- package/lib/sidebar/index.js +5 -12
- package/lib/terminalNotifications/index.d.ts +4 -10
- package/lib/terminalNotifications/index.js +6 -20
- package/lib/terminals/agentTerminals.d.ts +12 -5
- package/lib/terminals/agentTerminals.js +25 -44
- package/lib/terminals/detection.d.ts +4 -8
- package/lib/terminals/detection.js +4 -8
- package/lib/terminals/index.d.ts +0 -35
- package/lib/terminals/index.js +12 -101
- package/lib/terminals/model.d.ts +64 -139
- package/lib/terminals/model.js +80 -220
- package/lib/terminals/tokens.d.ts +11 -22
- package/lib/terminals/tokens.js +2 -2
- package/lib/terminals/widget.d.ts +43 -13
- package/lib/terminals/widget.js +33 -18
- package/lib/topBar/icons.d.ts +3 -8
- package/lib/topBar/icons.js +3 -8
- package/lib/topBar/index.d.ts +4 -11
- package/lib/topBar/index.js +10 -38
- package/lib/walkthrough/index.d.ts +4 -9
- package/lib/walkthrough/index.js +6 -20
- package/lib/walkthrough/panel.d.ts +40 -9
- package/lib/walkthrough/panel.js +4 -10
- package/package.json +2 -2
- package/src/about/icons.ts +0 -5
- package/src/about/index.tsx +6 -17
- package/src/agentSessions.ts +9 -29
- package/src/askAgent/editorSelection.ts +22 -29
- package/src/askAgent/icons.ts +2 -3
- package/src/askAgent/index.ts +54 -158
- package/src/askAgent/popup.tsx +23 -45
- package/src/askAgent/prompt.ts +6 -19
- package/src/askAgent/queue.ts +13 -24
- package/src/askAgent/queuePanel.tsx +21 -46
- package/src/askAgent/targetPicker.tsx +5 -15
- package/src/askAgent/tokens.ts +32 -46
- package/src/commandBar/index.ts +24 -39
- package/src/customPanel/index.ts +15 -0
- package/src/editorBreadcrumbs/index.ts +10 -6
- package/src/editorBreadcrumbs/widget.ts +23 -17
- package/src/editorIndent/index.ts +17 -23
- package/src/fileBrowser/commands.ts +57 -98
- package/src/fileBrowser/contents.ts +3 -0
- package/src/fileBrowser/dragAndDrop.ts +17 -7
- package/src/fileBrowser/fileBrowser.tsx +84 -223
- package/src/fileBrowser/gitStatus.ts +7 -17
- package/src/fileBrowser/gitignore.ts +4 -25
- package/src/fileBrowser/icons.ts +25 -80
- package/src/fileBrowser/index.ts +2 -4
- package/src/fileBrowser/widget.tsx +149 -50
- package/src/fileTypeIcons/index.ts +0 -10
- package/src/git/api.ts +10 -36
- package/src/git/askRequest.ts +6 -20
- package/src/git/commands.ts +70 -10
- package/src/git/diffModel.ts +25 -0
- package/src/git/diffSurface.tsx +71 -159
- package/src/git/diffWidget.tsx +104 -14
- package/src/git/imageDiff.tsx +45 -51
- package/src/git/index.ts +3 -8
- package/src/git/notebookDiff.tsx +211 -238
- package/src/git/tokens.ts +73 -31
- package/src/highlight/index.ts +10 -41
- package/src/index.ts +0 -9
- package/src/launcher/agents.ts +64 -95
- package/src/launcher/availability.ts +3 -9
- package/src/launcher/commands.ts +14 -51
- package/src/launcher/dashboard.tsx +49 -88
- package/src/launcher/editorRegistry.ts +21 -29
- package/src/launcher/editors.ts +39 -58
- package/src/launcher/icons.ts +5 -39
- package/src/launcher/index.ts +12 -55
- package/src/launcher/invocation.ts +7 -22
- package/src/launcher/registry.ts +9 -7
- package/src/launcher/tokens.ts +10 -22
- package/src/menuBar/index.ts +11 -28
- package/src/menus/index.ts +14 -30
- package/src/omnibox/files.ts +10 -14
- package/src/omnibox/index.ts +9 -27
- package/src/omnibox/model.ts +50 -38
- package/src/omnibox/recents.ts +17 -22
- package/src/omnibox/tokens.ts +5 -10
- package/src/omnibox/widget.tsx +14 -19
- package/src/searchReplace/index.ts +7 -27
- package/src/showOutput/index.ts +6 -22
- package/src/sidebar/index.ts +20 -12
- package/src/terminalNotifications/index.ts +42 -25
- package/src/terminals/agentTerminals.ts +25 -49
- package/src/terminals/detection.ts +4 -8
- package/src/terminals/index.ts +12 -101
- package/src/terminals/model.ts +130 -246
- package/src/terminals/tokens.ts +11 -22
- package/src/terminals/widget.tsx +48 -31
- package/src/topBar/icons.ts +3 -8
- package/src/topBar/index.ts +21 -44
- package/src/walkthrough/index.ts +6 -20
- package/src/walkthrough/panel.ts +40 -10
- package/style/about.css +2 -7
- package/style/askAgent.css +8 -40
- package/style/base.css +9 -45
- package/style/chrome.css +108 -308
- package/style/commandBar.css +4 -20
- package/style/customPanel.css +1 -4
- package/style/git.css +22 -184
- package/style/highlight.css +1 -3
- package/style/launcher.css +6 -70
- package/style/omnibox.css +2 -14
- package/style/showOutput.css +0 -6
- package/style/sidebar.css +29 -9
- package/style/tabs.css +5 -13
- package/style/terminals.css +6 -53
- package/style/topBar.css +2 -22
- package/style/walkthrough.css +0 -8
package/style/commandBar.css
CHANGED
|
@@ -1,19 +1,5 @@
|
|
|
1
|
-
/*
|
|
2
|
-
|
|
3
|
-
/*
|
|
4
|
-
* The widget is a settings-driven item of JupyterLab's top bar toolbar
|
|
5
|
-
* (`#jp-top-bar`, factory "TopBar"), declared in schema/command-bar.json with
|
|
6
|
-
* a rank past the toolbar's built-in spacer, so it sits at the trailing end of
|
|
7
|
-
* the toolbar next to the right-sidebar toggle button.
|
|
8
|
-
*
|
|
9
|
-
* The widget's root (`.jp-xtralab-CommandBar`) is a plain wrapper that takes
|
|
10
|
-
* the core `.jp-Toolbar > .jp-Toolbar-item` sizing — full toolbar height,
|
|
11
|
-
* centered flex — so it needs no rules of its own; the pill button inside
|
|
12
|
-
* keeps its own compact height. It is styled with the theme's input-field
|
|
13
|
-
* fill so it reads as a search box and tracks each theme's input styling
|
|
14
|
-
* across light and dark (a flat layout color is near-black in some dark
|
|
15
|
-
* themes).
|
|
16
|
-
*/
|
|
1
|
+
/* The bare root takes core toolbar-item sizing; the input-field fill reads as
|
|
2
|
+
* a search box (a flat layout color is near-black in some dark themes). */
|
|
17
3
|
.jp-xtralab-CommandBar-button {
|
|
18
4
|
display: flex;
|
|
19
5
|
flex: 0 0 auto;
|
|
@@ -56,9 +42,8 @@
|
|
|
56
42
|
height: 14px;
|
|
57
43
|
}
|
|
58
44
|
|
|
59
|
-
/*
|
|
60
|
-
|
|
61
|
-
tracks the pill's text color and brightens with the label on hover. */
|
|
45
|
+
/* Core's search icon paints with a fixed `jp-icon3` gray; currentColor makes
|
|
46
|
+
the magnifier track the pill's text color. */
|
|
62
47
|
.jp-xtralab-CommandBar-button .jp-icon3[fill] {
|
|
63
48
|
fill: currentcolor;
|
|
64
49
|
}
|
|
@@ -70,7 +55,6 @@
|
|
|
70
55
|
white-space: nowrap;
|
|
71
56
|
}
|
|
72
57
|
|
|
73
|
-
/* Keyboard-shortcut hint, pushed to the trailing edge by the growing label. */
|
|
74
58
|
.jp-xtralab-CommandBar-shortcut {
|
|
75
59
|
flex: 0 0 auto;
|
|
76
60
|
margin-left: 6px;
|
package/style/customPanel.css
CHANGED
package/style/git.css
CHANGED
|
@@ -1,19 +1,8 @@
|
|
|
1
1
|
/*
|
|
2
|
-
*
|
|
3
|
-
*
|
|
4
|
-
* providers, so these rules cover both hosts.
|
|
2
|
+
* @pierre/diffs viewer styles, shared by the launcher dashboard's diff tab
|
|
3
|
+
* and the jupyterlab-git diff providers.
|
|
5
4
|
*/
|
|
6
5
|
|
|
7
|
-
/*
|
|
8
|
-
* Diff viewer (main area). The `MainAreaWidget` holding the React content
|
|
9
|
-
* gets sized by JupyterLab's box layout; the inner content div fills it
|
|
10
|
-
* and provides vertical scroll. Horizontal scrolling within each code
|
|
11
|
-
* block is owned by `@pierre/diffs` via its internal `data-code` rules.
|
|
12
|
-
*
|
|
13
|
-
* The block also forwards JupyterLab's theme variables onto the
|
|
14
|
-
* `--diffs-*-override` properties the library exposes, so the diff
|
|
15
|
-
* recolors with the active theme.
|
|
16
|
-
*/
|
|
17
6
|
.jp-xtralab-DiffWidget {
|
|
18
7
|
background-color: var(--jp-layout-color1);
|
|
19
8
|
color: var(--jp-ui-font-color1);
|
|
@@ -23,13 +12,6 @@
|
|
|
23
12
|
font-style: italic;
|
|
24
13
|
}
|
|
25
14
|
|
|
26
|
-
/*
|
|
27
|
-
* Flex-column container: an optional toolbar at the top (notebook view
|
|
28
|
-
* mode toggle) plus a body that hosts the scrollable diff and the
|
|
29
|
-
* column resize handle. Splitting these responsibilities keeps the
|
|
30
|
-
* resize handle pinned to the visible viewport while the diff content
|
|
31
|
-
* scrolls underneath, and keeps the toolbar always visible.
|
|
32
|
-
*/
|
|
33
15
|
.jp-xtralab-DiffWidget-content {
|
|
34
16
|
display: flex;
|
|
35
17
|
flex-direction: column;
|
|
@@ -38,9 +20,6 @@
|
|
|
38
20
|
background-color: var(--jp-layout-color1);
|
|
39
21
|
color: var(--jp-ui-font-color1);
|
|
40
22
|
|
|
41
|
-
/*
|
|
42
|
-
* Feed JupyterLab theme colors into @pierre/diffs.
|
|
43
|
-
*/
|
|
44
23
|
--diffs-bg-override: var(--jp-layout-color1);
|
|
45
24
|
--diffs-bg-buffer-override: var(--jp-layout-color1);
|
|
46
25
|
--diffs-bg-context-override: var(--jp-layout-color1);
|
|
@@ -56,12 +35,8 @@
|
|
|
56
35
|
--diffs-deletion-color-override: var(--jp-error-color1);
|
|
57
36
|
}
|
|
58
37
|
|
|
59
|
-
/*
|
|
60
|
-
|
|
61
|
-
* its own positioning context so the resizer can be absolutely placed
|
|
62
|
-
* within the body's bounds (and therefore aligned with the visible
|
|
63
|
-
* scroll area, not the toolbar above it).
|
|
64
|
-
*/
|
|
38
|
+
/* Positioning context for the resizer, aligning it with the scroll area
|
|
39
|
+
rather than the toolbar. */
|
|
65
40
|
.jp-xtralab-DiffWidget-body {
|
|
66
41
|
position: relative;
|
|
67
42
|
flex: 1 1 auto;
|
|
@@ -74,12 +49,6 @@
|
|
|
74
49
|
overflow: auto;
|
|
75
50
|
}
|
|
76
51
|
|
|
77
|
-
/*
|
|
78
|
-
* Segmented selectors that live in the diff toolbar: the Notebook/JSON
|
|
79
|
-
* view-mode toggle (for `.ipynb` diffs) and the Split/Unified diff-style
|
|
80
|
-
* toggle (for textual/code diffs). The host toolbar provides its own
|
|
81
|
-
* background and border, so these are just the segmented controls.
|
|
82
|
-
*/
|
|
83
52
|
.jp-xtralab-DiffWidget-viewModeToolbarItem,
|
|
84
53
|
.jp-xtralab-DiffWidget-diffStyleToolbarItem {
|
|
85
54
|
display: flex;
|
|
@@ -87,9 +56,6 @@
|
|
|
87
56
|
font-size: var(--jp-ui-font-size0);
|
|
88
57
|
}
|
|
89
58
|
|
|
90
|
-
/*
|
|
91
|
-
* Breathing room when both toggles appear (notebook diff in JSON view).
|
|
92
|
-
*/
|
|
93
59
|
.jp-xtralab-DiffWidget-diffStyleToolbarItem {
|
|
94
60
|
margin-left: 4px;
|
|
95
61
|
}
|
|
@@ -116,12 +82,6 @@
|
|
|
116
82
|
background-color: var(--jp-layout-color2);
|
|
117
83
|
}
|
|
118
84
|
|
|
119
|
-
/*
|
|
120
|
-
* Active segment: brand-colour fill with the inverse UI font colour — the
|
|
121
|
-
* same pair JupyterLab uses to mark selected items (the command palette
|
|
122
|
-
* active item, the file browser selection). The inverse font colour adapts
|
|
123
|
-
* per theme, so the label stays legible on the brand fill in both themes.
|
|
124
|
-
*/
|
|
125
85
|
.jp-xtralab-DiffWidget-segmentedButton[data-active='true'] {
|
|
126
86
|
background-color: var(--jp-brand-color1);
|
|
127
87
|
color: var(--jp-ui-inverse-font-color1);
|
|
@@ -131,11 +91,6 @@
|
|
|
131
91
|
background-color: var(--jp-brand-color1);
|
|
132
92
|
}
|
|
133
93
|
|
|
134
|
-
/*
|
|
135
|
-
* Icon variant of the segmented button, used by the Split/Unified toggle.
|
|
136
|
-
* The inline SVGs fill with `currentColor`, so the active/hover color rules
|
|
137
|
-
* above carry over to the glyph.
|
|
138
|
-
*/
|
|
139
94
|
.jp-xtralab-DiffWidget-segmentedButton-icon {
|
|
140
95
|
display: inline-flex;
|
|
141
96
|
align-items: center;
|
|
@@ -149,12 +104,6 @@
|
|
|
149
104
|
height: 14px;
|
|
150
105
|
}
|
|
151
106
|
|
|
152
|
-
/*
|
|
153
|
-
* Draggable column splitter. Sits on top of the diff (z-index above the
|
|
154
|
-
* content) but stays a thin strip so it doesn't visually intrude. The
|
|
155
|
-
* `transform: translateX(-50%)` centers the strip on the column boundary
|
|
156
|
-
* the inline `left` percentage points to.
|
|
157
|
-
*/
|
|
158
107
|
.jp-xtralab-DiffWidget-resizer {
|
|
159
108
|
position: absolute;
|
|
160
109
|
top: 0;
|
|
@@ -192,12 +141,7 @@
|
|
|
192
141
|
color: var(--jp-ui-font-color1);
|
|
193
142
|
}
|
|
194
143
|
|
|
195
|
-
/*
|
|
196
|
-
* Per-hunk action overlay. The diff library injects a row at the
|
|
197
|
-
* annotation's anchor line and renders this content inside it; we keep the
|
|
198
|
-
* row visually unobtrusive — a single small icon button that fades in on
|
|
199
|
-
* row hover — so the annotation does not compete with the diff content.
|
|
200
|
-
*/
|
|
144
|
+
/* The diff library injects this per-hunk row at the anchor line. */
|
|
201
145
|
.jp-xtralab-DiffWidget-hunkAnnotation {
|
|
202
146
|
display: flex;
|
|
203
147
|
justify-content: flex-end;
|
|
@@ -234,16 +178,8 @@
|
|
|
234
178
|
height: 14px;
|
|
235
179
|
}
|
|
236
180
|
|
|
237
|
-
/*
|
|
238
|
-
|
|
239
|
-
* optional notebook-level metadata block at the bottom. Each cell carries
|
|
240
|
-
* its own header (kind badge + cell index + cell type) and a body with the
|
|
241
|
-
* source / outputs / metadata sub-diffs the @pierre/diffs library produces.
|
|
242
|
-
*
|
|
243
|
-
* The sticky header keeps the scope visible while the user scrolls through
|
|
244
|
-
* a long cell, and the data-kind attributes drive the colored badges and
|
|
245
|
-
* left borders that distinguish added / removed / modified / unchanged.
|
|
246
|
-
*/
|
|
181
|
+
/* Notebook diff: one block per cell plus an optional notebook-level
|
|
182
|
+
metadata block. */
|
|
247
183
|
.jp-xtralab-NotebookDiff {
|
|
248
184
|
display: flex;
|
|
249
185
|
flex-direction: column;
|
|
@@ -251,13 +187,6 @@
|
|
|
251
187
|
gap: 8px;
|
|
252
188
|
}
|
|
253
189
|
|
|
254
|
-
/*
|
|
255
|
-
* The cell entry grid. Two equal columns mirror the old / new mental model
|
|
256
|
-
* the column header bar establishes; each cell entry below either spans
|
|
257
|
-
* both columns (modified / unchanged) or sits in a single column with an
|
|
258
|
-
* empty placeholder on the other side (added / removed). Auto rows let
|
|
259
|
-
* each cell pick its own height naturally.
|
|
260
|
-
*/
|
|
261
190
|
.jp-xtralab-NotebookDiff-grid {
|
|
262
191
|
display: grid;
|
|
263
192
|
grid-template-columns: 1fr 1fr;
|
|
@@ -277,12 +206,6 @@
|
|
|
277
206
|
grid-column: 2;
|
|
278
207
|
}
|
|
279
208
|
|
|
280
|
-
/*
|
|
281
|
-
* Empty placeholder rendered in the column opposite an added or removed
|
|
282
|
-
* cell. Visible (dashed outline) so the user can see the alignment gap
|
|
283
|
-
* the missing cell creates between old and new. Sized roughly like a
|
|
284
|
-
* minimal cell card so the row height is consistent.
|
|
285
|
-
*/
|
|
286
209
|
.jp-xtralab-NotebookDiff-empty {
|
|
287
210
|
display: flex;
|
|
288
211
|
align-items: center;
|
|
@@ -437,12 +360,6 @@
|
|
|
437
360
|
border-bottom: 1px solid var(--jp-border-color3);
|
|
438
361
|
}
|
|
439
362
|
|
|
440
|
-
/*
|
|
441
|
-
* The verbatim source listing rendered when the user expands an unchanged
|
|
442
|
-
* cell. We don't pass it through @pierre/diffs because there is no diff —
|
|
443
|
-
* just the cell contents — but match the diff library's monospace rhythm
|
|
444
|
-
* so the surrounding cells still look uniform.
|
|
445
|
-
*/
|
|
446
363
|
.jp-xtralab-NotebookDiff-unchangedSource {
|
|
447
364
|
margin: 0;
|
|
448
365
|
padding: 8px 12px;
|
|
@@ -463,12 +380,6 @@
|
|
|
463
380
|
border-top: 1px solid var(--jp-border-color3);
|
|
464
381
|
}
|
|
465
382
|
|
|
466
|
-
/*
|
|
467
|
-
* Side-by-side panes used by both OutputsSection and MarkdownPreviewSection.
|
|
468
|
-
* The grid columns mirror the split-mode FileDiff above so the two halves
|
|
469
|
-
* read as the same left=old / right=new mental model the user is already
|
|
470
|
-
* tracking on the source diff.
|
|
471
|
-
*/
|
|
472
383
|
.jp-xtralab-NotebookDiff-sideBySide {
|
|
473
384
|
display: flex;
|
|
474
385
|
flex-direction: column;
|
|
@@ -486,11 +397,6 @@
|
|
|
486
397
|
grid-template-columns: 1fr;
|
|
487
398
|
}
|
|
488
399
|
|
|
489
|
-
/*
|
|
490
|
-
* Each pane takes one column. The data-side colored bar on the left edge
|
|
491
|
-
* matches the cell-block kind colors so the pane's role (old vs new) is
|
|
492
|
-
* clear even in dark theme where the diff library's column-tint is subtle.
|
|
493
|
-
*/
|
|
494
400
|
.jp-xtralab-NotebookDiff-sidePane {
|
|
495
401
|
padding: 8px 12px;
|
|
496
402
|
min-width: 0;
|
|
@@ -507,11 +413,6 @@
|
|
|
507
413
|
background-color: var(--jp-layout-color1);
|
|
508
414
|
}
|
|
509
415
|
|
|
510
|
-
/*
|
|
511
|
-
* Rendermime widgets bring their own padding/margin defaults; we constrain
|
|
512
|
-
* them to the pane width so a wide HTML output (table, image) doesn't push
|
|
513
|
-
* the grid out of shape.
|
|
514
|
-
*/
|
|
515
416
|
.jp-xtralab-NotebookDiff-sidePane .jp-RenderedHTMLCommon,
|
|
516
417
|
.jp-xtralab-NotebookDiff-sidePane .jp-OutputArea {
|
|
517
418
|
max-width: 100%;
|
|
@@ -532,16 +433,10 @@
|
|
|
532
433
|
}
|
|
533
434
|
|
|
534
435
|
/*
|
|
535
|
-
* Image diff
|
|
536
|
-
*
|
|
537
|
-
*
|
|
538
|
-
*
|
|
539
|
-
* Every mode is sized to *fit the widget*: the images are contained
|
|
540
|
-
* within the available area (never upscaled past their natural size, and
|
|
541
|
-
* scaled down to fit when larger) so nothing overflows. In particular the
|
|
542
|
-
* swipe/onion slider stays on screen even when the two revisions have very
|
|
543
|
-
* different dimensions. A neutral checkerboard sits behind each image so
|
|
544
|
-
* transparency reads clearly in both light and dark themes.
|
|
436
|
+
* Image diff: xtralab's replacement for the jupyterlab-git image diff —
|
|
437
|
+
* 2-up / swipe / onion-skin under a sticky mode selector. Every mode fits
|
|
438
|
+
* the widget (images scale down, never upscale past natural size), with a
|
|
439
|
+
* theme-aware checkerboard behind transparency.
|
|
545
440
|
*/
|
|
546
441
|
.jp-xtralab-ImageDiff {
|
|
547
442
|
display: flex;
|
|
@@ -559,12 +454,8 @@
|
|
|
559
454
|
border-bottom: 1px solid var(--jp-border-color2);
|
|
560
455
|
}
|
|
561
456
|
|
|
562
|
-
/*
|
|
563
|
-
|
|
564
|
-
* flex child that fits inside it (`min-height: 0` lets the flex/grid
|
|
565
|
-
* children shrink below their intrinsic size so `max-height` on the
|
|
566
|
-
* images can take effect).
|
|
567
|
-
*/
|
|
457
|
+
/* The body never scrolls; min-height: 0 lets children shrink below their
|
|
458
|
+
intrinsic size so the image max-heights engage. */
|
|
568
459
|
.jp-xtralab-ImageDiff-body {
|
|
569
460
|
flex: 1 1 auto;
|
|
570
461
|
min-height: 0;
|
|
@@ -591,18 +482,6 @@
|
|
|
591
482
|
margin: 0;
|
|
592
483
|
}
|
|
593
484
|
|
|
594
|
-
/*
|
|
595
|
-
* Checkerboard + border so transparent regions read clearly. The squares
|
|
596
|
-
* are theme-aware (JupyterLab layout colors) so the frame stays a calm
|
|
597
|
-
* light checkerboard in the light theme and a calm dark one in the dark
|
|
598
|
-
* theme, rather than a bright white block.
|
|
599
|
-
*
|
|
600
|
-
* 2-up and onion fill their whole panel with it; the swipe view instead
|
|
601
|
-
* carries it on its image-sized *frame* (not the surrounding area) so the
|
|
602
|
-
* checkerboard hugs the image. That keeps the divider's top/bottom handles
|
|
603
|
-
* sitting at the image edges instead of floating in the middle of a
|
|
604
|
-
* checkerboard expanse.
|
|
605
|
-
*/
|
|
606
485
|
.jp-xtralab-ImageDiff-frame,
|
|
607
486
|
.jp-xtralab-ImageDiff-stack,
|
|
608
487
|
.jp-xtralab-ImageDiff-swipeFrame {
|
|
@@ -665,12 +544,7 @@
|
|
|
665
544
|
gap: 12px;
|
|
666
545
|
}
|
|
667
546
|
|
|
668
|
-
/*
|
|
669
|
-
* Onion-skin view: both revisions occupy the same grid cell so they
|
|
670
|
-
* overlay. `place-items: center` keeps each image at its own size (no
|
|
671
|
-
* stretching the smaller revision up to the larger one's box) while
|
|
672
|
-
* `max-height/width` scale either one down to fit the available space.
|
|
673
|
-
*/
|
|
547
|
+
/* Onion-skin: both revisions share one grid cell. */
|
|
674
548
|
.jp-xtralab-ImageDiff-stack {
|
|
675
549
|
flex: 1 1 auto;
|
|
676
550
|
min-height: 0;
|
|
@@ -691,12 +565,6 @@
|
|
|
691
565
|
object-fit: contain;
|
|
692
566
|
}
|
|
693
567
|
|
|
694
|
-
/*
|
|
695
|
-
* Swipe view: a transparent container that just centers the image-sized
|
|
696
|
-
* frame in whatever space the body leaves. The checkerboard lives on the
|
|
697
|
-
* frame (above), not here, so it hugs the image rather than spanning the
|
|
698
|
-
* panel.
|
|
699
|
-
*/
|
|
700
568
|
.jp-xtralab-ImageDiff-swipeArea {
|
|
701
569
|
flex: 1 1 auto;
|
|
702
570
|
min-height: 0;
|
|
@@ -708,17 +576,11 @@
|
|
|
708
576
|
}
|
|
709
577
|
|
|
710
578
|
/*
|
|
711
|
-
* The frame is sized
|
|
712
|
-
*
|
|
713
|
-
*
|
|
714
|
-
*
|
|
715
|
-
*
|
|
716
|
-
* as it is dragged. (A full-width frame instead let the line drift off the
|
|
717
|
-
* seam by up to half the surrounding letterbox.)
|
|
718
|
-
*
|
|
719
|
-
* The whole frame is the drag target: pressing anywhere over the image
|
|
720
|
-
* jumps the divider to that x and then drag-tracks the pointer (GitHub /
|
|
721
|
-
* Pierre style), keeping cursor, divider and seam together.
|
|
579
|
+
* The frame is JS-sized (inline width/height) to exactly the displayed
|
|
580
|
+
* image box, so the divider's `left: N%`, the pointer mapping in
|
|
581
|
+
* setFromClientX, and the images' clip-path insets all resolve against the
|
|
582
|
+
* same width — the divider stays on the seam. The whole frame is the drag
|
|
583
|
+
* target: pressing jumps the divider there, then drag-tracks the pointer.
|
|
722
584
|
*/
|
|
723
585
|
.jp-xtralab-ImageDiff-swipeFrame {
|
|
724
586
|
position: relative;
|
|
@@ -728,12 +590,6 @@
|
|
|
728
590
|
touch-action: none;
|
|
729
591
|
}
|
|
730
592
|
|
|
731
|
-
/*
|
|
732
|
-
* Both revisions fill the frame, so an image's clip inset of N% and the
|
|
733
|
-
* divider at `left: N%` cut at the same x. `object-fit: contain` only
|
|
734
|
-
* letterboxes when the two revisions differ in aspect ratio; for the
|
|
735
|
-
* common same-dimensions edit it fills the box exactly.
|
|
736
|
-
*/
|
|
737
593
|
.jp-xtralab-ImageDiff-swipeImg {
|
|
738
594
|
position: absolute;
|
|
739
595
|
inset: 0;
|
|
@@ -743,19 +599,9 @@
|
|
|
743
599
|
object-fit: contain;
|
|
744
600
|
}
|
|
745
601
|
|
|
746
|
-
/*
|
|
747
|
-
|
|
748
|
-
|
|
749
|
-
* barely visible — especially on light content where it disappears into
|
|
750
|
-
* the background — so an explicit divider with high-contrast styling is
|
|
751
|
-
* drawn on top. White core with dark outline + soft shadow keeps it
|
|
752
|
-
* legible against any image, light or dark.
|
|
753
|
-
*
|
|
754
|
-
* The divider and its handles are the only elements that show the
|
|
755
|
-
* `ew-resize` cursor — clicks anywhere over the image still bubble up
|
|
756
|
-
* to the frame's drag handler, but the cursor only signals "drag me"
|
|
757
|
-
* over the actual control affordances.
|
|
758
|
-
*/
|
|
602
|
+
/* The natural seam between the clipped revisions is barely visible, so an
|
|
603
|
+
explicit high-contrast divider is drawn on top: white core + dark
|
|
604
|
+
outline reads on any image. */
|
|
759
605
|
.jp-xtralab-ImageDiff-swipeDivider {
|
|
760
606
|
position: absolute;
|
|
761
607
|
top: 0;
|
|
@@ -777,11 +623,6 @@
|
|
|
777
623
|
0 0 6px rgb(0 0 0 / 45%);
|
|
778
624
|
}
|
|
779
625
|
|
|
780
|
-
/*
|
|
781
|
-
* Handle pucks at the top and bottom of the divider. The two arrows
|
|
782
|
-
* inside (left + right chevrons) signal that the line can be dragged
|
|
783
|
-
* sideways — matching GitHub's image diff swipe affordance.
|
|
784
|
-
*/
|
|
785
626
|
.jp-xtralab-ImageDiff-swipeDividerHandle {
|
|
786
627
|
position: absolute;
|
|
787
628
|
left: 50%;
|
|
@@ -808,9 +649,6 @@
|
|
|
808
649
|
bottom: -14px;
|
|
809
650
|
}
|
|
810
651
|
|
|
811
|
-
/*
|
|
812
|
-
* Chevron triangles drawn with borders so no asset is needed.
|
|
813
|
-
*/
|
|
814
652
|
.jp-xtralab-ImageDiff-swipeDividerArrow {
|
|
815
653
|
width: 0;
|
|
816
654
|
height: 0;
|
package/style/highlight.css
CHANGED
|
@@ -1,8 +1,6 @@
|
|
|
1
1
|
/*
|
|
2
2
|
* Line highlight applied by `xtralab:highlight-lines`. The class lands on the
|
|
3
|
-
* CodeMirror
|
|
4
|
-
* and a left accent bar marks the run. The translucent background keeps the
|
|
5
|
-
* code legible on both light and dark themes.
|
|
3
|
+
* CodeMirror `.cm-line` wrapper, so the tint spans the full editor width.
|
|
6
4
|
*/
|
|
7
5
|
|
|
8
6
|
.jp-xtralab-highlightLine {
|
package/style/launcher.css
CHANGED
|
@@ -1,14 +1,3 @@
|
|
|
1
|
-
/*
|
|
2
|
-
* Styling for the launcher dashboard widget. The widget replaces
|
|
3
|
-
* JupyterLab's stock `jp-Launcher`, so we don't piggy-back on the
|
|
4
|
-
* `jp-Launcher-*` classes — every selector is scoped under
|
|
5
|
-
* `jp-xtralab-Launcher` to keep the rules from leaking elsewhere.
|
|
6
|
-
*
|
|
7
|
-
* Colors and spacing pull from the active JupyterLab theme via the
|
|
8
|
-
* standard `--jp-*` custom properties so the launcher tracks dark/light
|
|
9
|
-
* mode automatically.
|
|
10
|
-
*/
|
|
11
|
-
|
|
12
1
|
.jp-xtralab-Launcher {
|
|
13
2
|
display: flex;
|
|
14
3
|
flex-direction: column;
|
|
@@ -32,12 +21,6 @@
|
|
|
32
21
|
box-sizing: border-box;
|
|
33
22
|
}
|
|
34
23
|
|
|
35
|
-
/*
|
|
36
|
-
* Sections — grouped content blocks. The agent picker uses a regular
|
|
37
|
-
* `<section>`; the changes panel uses a `<details>` so the user can
|
|
38
|
-
* collapse it. Both share the same gap + alignment so the page reads
|
|
39
|
-
* uniformly regardless of which element type is underneath.
|
|
40
|
-
*/
|
|
41
24
|
.jp-xtralab-Launcher-section {
|
|
42
25
|
display: flex;
|
|
43
26
|
flex-direction: column;
|
|
@@ -53,15 +36,10 @@
|
|
|
53
36
|
text-transform: uppercase;
|
|
54
37
|
}
|
|
55
38
|
|
|
56
|
-
/*
|
|
57
|
-
* Collapsible changes section. The native `<summary>` is a flex row
|
|
58
|
-
* that hosts the title, count badge, and refresh action; the disclosure
|
|
59
|
-
* triangle is the browser default — it rotates when the section opens.
|
|
60
|
-
*/
|
|
61
39
|
.jp-xtralab-Launcher-changes-section,
|
|
62
40
|
.jp-xtralab-Launcher-mcp-section {
|
|
63
41
|
/* Reset the default `<details>` block so its contents inherit the
|
|
64
|
-
section's gap-aligned column layout
|
|
42
|
+
section's gap-aligned column layout. */
|
|
65
43
|
display: flex;
|
|
66
44
|
flex-direction: column;
|
|
67
45
|
gap: 8px;
|
|
@@ -87,11 +65,8 @@
|
|
|
87
65
|
outline-offset: 1px;
|
|
88
66
|
}
|
|
89
67
|
|
|
90
|
-
/*
|
|
91
|
-
*
|
|
92
|
-
* native triangle, so draw one (a CSS border triangle in `currentColor`) and
|
|
93
|
-
* rotate it from pointing right to pointing down when the section is open.
|
|
94
|
-
*/
|
|
68
|
+
/* `display: flex` on the `<summary>` drops the browser's native disclosure
|
|
69
|
+
* triangle, so draw a border triangle and rotate it when the section opens. */
|
|
95
70
|
.jp-xtralab-Launcher-section-summary::-webkit-details-marker {
|
|
96
71
|
display: none;
|
|
97
72
|
}
|
|
@@ -164,11 +139,6 @@
|
|
|
164
139
|
font-size: var(--jp-ui-font-size1);
|
|
165
140
|
}
|
|
166
141
|
|
|
167
|
-
/*
|
|
168
|
-
* Changed files list. Each row is a button so click + keyboard activate
|
|
169
|
-
* both work; the letter on the left is the file's single-letter git status,
|
|
170
|
-
* colored to match the @pierre/trees file tree's decorations.
|
|
171
|
-
*/
|
|
172
142
|
.jp-xtralab-Launcher-changes {
|
|
173
143
|
list-style: none;
|
|
174
144
|
margin: 0;
|
|
@@ -179,13 +149,8 @@
|
|
|
179
149
|
border-radius: 4px;
|
|
180
150
|
overflow: hidden;
|
|
181
151
|
|
|
182
|
-
/*
|
|
183
|
-
|
|
184
|
-
* defaults. The file tree resolves those through `light-dark()` under
|
|
185
|
-
* `color-scheme: light dark` — i.e. by OS appearance — so the
|
|
186
|
-
* `prefers-color-scheme` override below reproduces that exact resolution
|
|
187
|
-
* and keeps these letters in lockstep with the tree's.
|
|
188
|
-
*/
|
|
152
|
+
/* Mirrors the @pierre/trees `--trees-status-*` defaults, which resolve via
|
|
153
|
+
`light-dark()` by OS appearance — hence the `prefers-color-scheme` override below. */
|
|
189
154
|
--xtralab-git-status-added: #16a994;
|
|
190
155
|
--xtralab-git-status-modified: #1ca1c7;
|
|
191
156
|
--xtralab-git-status-renamed: #d5a910;
|
|
@@ -228,11 +193,6 @@
|
|
|
228
193
|
outline-offset: -1px;
|
|
229
194
|
}
|
|
230
195
|
|
|
231
|
-
/*
|
|
232
|
-
* Bare colored letter, not a filled badge — the same treatment the
|
|
233
|
-
* @pierre/trees file tree gives its git status decorations. The fixed width
|
|
234
|
-
* keeps the letters in a tidy gutter so the paths stay column-aligned.
|
|
235
|
-
*/
|
|
236
196
|
.jp-xtralab-Launcher-change-badge {
|
|
237
197
|
display: inline-flex;
|
|
238
198
|
align-items: center;
|
|
@@ -283,10 +243,6 @@
|
|
|
283
243
|
letter-spacing: 0.04em;
|
|
284
244
|
}
|
|
285
245
|
|
|
286
|
-
/*
|
|
287
|
-
* Prompt textarea + agent grid. The textarea is full-width and resizable
|
|
288
|
-
* vertically; the grid renders agent buttons as compact, icon-led tiles.
|
|
289
|
-
*/
|
|
290
246
|
.jp-xtralab-Launcher-prompt {
|
|
291
247
|
width: 100%;
|
|
292
248
|
min-height: 72px;
|
|
@@ -373,20 +329,6 @@
|
|
|
373
329
|
text-align: center;
|
|
374
330
|
}
|
|
375
331
|
|
|
376
|
-
/*
|
|
377
|
-
* MCP registration hint. A collapsed-by-default `<details>` listing the
|
|
378
|
-
* one-line `mcp add` command for each installed agent that supports one,
|
|
379
|
-
* each paired with a Copy button. The command sits in a read-only `<code>`
|
|
380
|
-
* box — the user copies it and runs it in their own terminal — so the row
|
|
381
|
-
* is not itself a button.
|
|
382
|
-
*/
|
|
383
|
-
|
|
384
|
-
/*
|
|
385
|
-
* The MCP hint is an optional helper, not a primary section, so its summary
|
|
386
|
-
* is rendered lighter and in sentence case rather than reusing the bold,
|
|
387
|
-
* uppercase treatment of the `START AN AGENT` / `OPEN` headers — otherwise a
|
|
388
|
-
* collapsed disclosure reads as a misplaced top-level section.
|
|
389
|
-
*/
|
|
390
332
|
.jp-xtralab-Launcher-mcp-section .jp-xtralab-Launcher-section-title {
|
|
391
333
|
font-weight: 500;
|
|
392
334
|
text-transform: none;
|
|
@@ -421,11 +363,7 @@
|
|
|
421
363
|
overflow-x: auto;
|
|
422
364
|
}
|
|
423
365
|
|
|
424
|
-
/*
|
|
425
|
-
* Copy buttons are sized to the longest label ("Copied!") and centered, so
|
|
426
|
-
* swapping "Copy" ↔ "Copied!" never resizes the button or ragged-aligns the
|
|
427
|
-
* column.
|
|
428
|
-
*/
|
|
366
|
+
/* Sized to the longest label ("Copied!") so the swap never resizes the button. */
|
|
429
367
|
.jp-xtralab-Launcher-mcp-copy {
|
|
430
368
|
flex: 0 0 auto;
|
|
431
369
|
min-width: 4.5rem;
|
|
@@ -451,8 +389,6 @@
|
|
|
451
389
|
outline-offset: 1px;
|
|
452
390
|
}
|
|
453
391
|
|
|
454
|
-
/* Confirmation state after a successful copy — a clear color shift, paired
|
|
455
|
-
with the button's "Copied!" label, so the action is unmistakable. */
|
|
456
392
|
.jp-xtralab-Launcher-mcp-copy.jp-mod-copied {
|
|
457
393
|
color: var(--jp-success-color1, var(--jp-ui-font-color1));
|
|
458
394
|
border-color: var(--jp-success-color1, var(--jp-border-color1));
|
package/style/omnibox.css
CHANGED
|
@@ -1,16 +1,9 @@
|
|
|
1
|
-
/*
|
|
2
|
-
|
|
3
|
-
/*
|
|
4
|
-
* The widget node is attached to `document.body` (outside the shell) and only
|
|
5
|
-
* carries theme variables via `jp-ThemedContainer`; the React tree renders the
|
|
6
|
-
* fixed full-screen overlay below it.
|
|
7
|
-
*/
|
|
1
|
+
/* The widget node attaches to `document.body` and carries `jp-ThemedContainer`
|
|
2
|
+
for theme variables; the React tree renders the fixed overlay below. */
|
|
8
3
|
.jp-xtralab-Omnibox {
|
|
9
4
|
position: absolute;
|
|
10
5
|
}
|
|
11
6
|
|
|
12
|
-
/* Transparent full-viewport layer that centers the panel and catches
|
|
13
|
-
click-outside to dismiss. */
|
|
14
7
|
.jp-xtralab-Omnibox-overlay {
|
|
15
8
|
position: fixed;
|
|
16
9
|
inset: 0;
|
|
@@ -26,8 +19,6 @@
|
|
|
26
19
|
width: min(640px, 92vw);
|
|
27
20
|
max-height: 60vh;
|
|
28
21
|
overflow: hidden;
|
|
29
|
-
|
|
30
|
-
/* Drop just below the top bar so it reads as a command-center dropdown. */
|
|
31
22
|
margin-top: calc(var(--jp-private-menubar-height, 28px) + 4px);
|
|
32
23
|
background: var(--jp-layout-color1);
|
|
33
24
|
border: var(--jp-border-width) solid
|
|
@@ -51,9 +42,6 @@
|
|
|
51
42
|
color: var(--jp-ui-font-color3);
|
|
52
43
|
}
|
|
53
44
|
|
|
54
|
-
/* Side gutters float the active-row highlight inside the panel edge,
|
|
55
|
-
matching the menu/palette treatment; section headers and items shift
|
|
56
|
-
together so their left alignment is preserved. */
|
|
57
45
|
.jp-xtralab-Omnibox-results {
|
|
58
46
|
padding: 5px 6px;
|
|
59
47
|
overflow-y: auto;
|
package/style/showOutput.css
CHANGED
|
@@ -1,9 +1,3 @@
|
|
|
1
|
-
/*
|
|
2
|
-
* The panel `xtralab:show` renders into. It holds a single rendered output and
|
|
3
|
-
* scrolls when that output is taller (or wider) than the panel, which matters
|
|
4
|
-
* most in the narrow side area.
|
|
5
|
-
*/
|
|
6
|
-
|
|
7
1
|
.jp-xtralab-ShowPanel {
|
|
8
2
|
overflow: auto;
|
|
9
3
|
padding: 8px;
|