xtralab 0.10.0 → 0.11.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.
Files changed (71) hide show
  1. package/README.md +23 -9
  2. package/lib/commandBar/index.d.ts +14 -0
  3. package/lib/commandBar/index.js +114 -0
  4. package/lib/fileBrowser/fileBrowser.js +6 -1
  5. package/lib/highlight/index.d.ts +15 -0
  6. package/lib/highlight/index.js +214 -0
  7. package/lib/index.js +13 -1
  8. package/lib/launcher/agents.d.ts +7 -0
  9. package/lib/launcher/agents.js +24 -0
  10. package/lib/launcher/editorRegistry.js +5 -3
  11. package/lib/launcher/editors.d.ts +8 -0
  12. package/lib/launcher/editors.js +17 -0
  13. package/lib/launcher/index.js +4 -0
  14. package/lib/launcher/schemaDefaults.d.ts +15 -0
  15. package/lib/launcher/schemaDefaults.js +44 -0
  16. package/lib/omnibox/files.d.ts +7 -0
  17. package/lib/omnibox/files.js +50 -0
  18. package/lib/omnibox/index.d.ts +14 -0
  19. package/lib/omnibox/index.js +83 -0
  20. package/lib/omnibox/model.d.ts +45 -0
  21. package/lib/omnibox/model.js +142 -0
  22. package/lib/omnibox/tokens.d.ts +23 -0
  23. package/lib/omnibox/tokens.js +11 -0
  24. package/lib/omnibox/widget.d.ts +36 -0
  25. package/lib/omnibox/widget.js +161 -0
  26. package/lib/searchReplace/index.d.ts +25 -0
  27. package/lib/searchReplace/index.js +68 -0
  28. package/lib/showOutput/index.d.ts +17 -0
  29. package/lib/showOutput/index.js +154 -0
  30. package/lib/terminals/index.d.ts +4 -0
  31. package/lib/terminals/index.js +65 -16
  32. package/lib/terminals/model.d.ts +56 -3
  33. package/lib/terminals/model.js +261 -5
  34. package/lib/terminals/widget.d.ts +3 -1
  35. package/lib/terminals/widget.js +11 -3
  36. package/lib/walkthrough/index.d.ts +14 -0
  37. package/lib/walkthrough/index.js +162 -0
  38. package/lib/walkthrough/panel.d.ts +54 -0
  39. package/lib/walkthrough/panel.js +98 -0
  40. package/package.json +1 -1
  41. package/schema/launcher.json +3 -2
  42. package/schema/terminals.json +15 -0
  43. package/src/commandBar/index.ts +165 -0
  44. package/src/fileBrowser/fileBrowser.tsx +8 -1
  45. package/src/highlight/index.ts +251 -0
  46. package/src/index.ts +13 -1
  47. package/src/launcher/agents.ts +25 -0
  48. package/src/launcher/editorRegistry.ts +8 -4
  49. package/src/launcher/editors.ts +18 -0
  50. package/src/launcher/index.ts +4 -0
  51. package/src/launcher/schemaDefaults.ts +53 -0
  52. package/src/omnibox/files.ts +68 -0
  53. package/src/omnibox/index.ts +105 -0
  54. package/src/omnibox/model.ts +210 -0
  55. package/src/omnibox/tokens.ts +29 -0
  56. package/src/omnibox/widget.tsx +322 -0
  57. package/src/searchReplace/index.ts +86 -0
  58. package/src/showOutput/index.ts +199 -0
  59. package/src/terminals/index.ts +79 -16
  60. package/src/terminals/model.ts +304 -3
  61. package/src/terminals/widget.tsx +21 -4
  62. package/src/walkthrough/index.ts +202 -0
  63. package/src/walkthrough/panel.ts +152 -0
  64. package/style/commandBar.css +104 -0
  65. package/style/highlight.css +11 -0
  66. package/style/index.css +5 -0
  67. package/style/index.js +5 -0
  68. package/style/omnibox.css +120 -0
  69. package/style/showOutput.css +11 -0
  70. package/style/terminals.css +54 -10
  71. package/style/walkthrough.css +80 -0
@@ -1,9 +1,11 @@
1
1
  /*
2
2
  * Left-sidebar panel listing running terminal sessions. Each row shows
3
- * the session's real (program-published) title and an inline shutdown
4
- * button that fades in on hover; the header carries the panel title and
5
- * a "new terminal" button. Colors and spacing pull from `--jp-*` custom
6
- * properties so the panel tracks the active JupyterLab theme.
3
+ * the session's real (program-published) title, a smaller line below it
4
+ * with the latest output from a running coding agent, and an inline
5
+ * shutdown button that fades in on hover; the header carries the panel
6
+ * title and a "new terminal" button. Colors and spacing pull from
7
+ * `--jp-*` custom properties so the panel tracks the active JupyterLab
8
+ * theme.
7
9
  */
8
10
 
9
11
  .jp-xtralab-Terminals {
@@ -105,7 +107,7 @@
105
107
  .jp-xtralab-Terminals-item {
106
108
  display: flex;
107
109
  align-items: stretch;
108
- height: 28px;
110
+ min-height: 28px;
109
111
  }
110
112
 
111
113
  .jp-xtralab-Terminals-item:hover {
@@ -113,17 +115,19 @@
113
115
  }
114
116
 
115
117
  /*
116
- * The main click target: terminal icon + label, filling the row so the
117
- * whole strip activates the session. The close button sits to its right
118
- * and intercepts its own clicks via the React handler.
118
+ * The main click target: terminal icon + the title/activity text block,
119
+ * filling the row so the whole strip activates the session. The close button
120
+ * sits to its right and intercepts its own clicks via the React handler.
121
+ * Top-aligned so the icon sits on the title line when an activity line wraps
122
+ * the row to a second line.
119
123
  */
120
124
  .jp-xtralab-Terminals-item-activate {
121
125
  display: flex;
122
126
  flex: 1 1 auto;
123
- align-items: center;
127
+ align-items: flex-start;
124
128
  gap: 6px;
125
129
  min-width: 0;
126
- padding: 0 4px 0 12px;
130
+ padding: 5px 4px 5px 12px;
127
131
  background: transparent;
128
132
  border: none;
129
133
  color: inherit;
@@ -137,12 +141,44 @@
137
141
  outline-offset: -2px;
138
142
  }
139
143
 
144
+ /* Nudge the 16px icon down a touch so it lines up with the title's cap
145
+ * height rather than the very top of the text block. */
146
+ .jp-xtralab-Terminals-item-icon {
147
+ margin-top: 1px;
148
+ }
149
+
150
+ /* The title + activity column, between the icon and the close button. */
151
+ .jp-xtralab-Terminals-item-text {
152
+ display: flex;
153
+ flex: 1 1 auto;
154
+ flex-direction: column;
155
+ gap: 1px;
156
+ min-width: 0;
157
+ }
158
+
140
159
  .jp-xtralab-Terminals-item-label {
141
160
  overflow: hidden;
142
161
  text-overflow: ellipsis;
143
162
  white-space: nowrap;
144
163
  }
145
164
 
165
+ /*
166
+ * The latest line of agent output, shown under the title. Smaller and dimmer
167
+ * than the title so it reads as secondary, and clamped to two lines with an
168
+ * ellipsis so a long line can't stretch the row indefinitely.
169
+ */
170
+ .jp-xtralab-Terminals-item-detail {
171
+ display: -webkit-box;
172
+ overflow: hidden;
173
+ font-size: var(--jp-ui-font-size0);
174
+ line-height: 1.3;
175
+ color: var(--jp-ui-font-color3);
176
+ text-overflow: ellipsis;
177
+ overflow-wrap: anywhere;
178
+ -webkit-line-clamp: 2;
179
+ -webkit-box-orient: vertical;
180
+ }
181
+
146
182
  /*
147
183
  * Close button. Hidden by default so the row reads as plain text; fades
148
184
  * in when the row is hovered or the button itself takes focus.
@@ -205,6 +241,14 @@
205
241
  background-color: var(--jp-brand-color1);
206
242
  }
207
243
 
244
+ /* Keep the activity line legible on the brand background: swap the dim
245
+ * neutral for the inverse font color, held a touch lighter than the title so
246
+ * it still reads as secondary. */
247
+ .jp-xtralab-Terminals-item.jp-mod-current .jp-xtralab-Terminals-item-detail {
248
+ color: var(--jp-ui-inverse-font-color1);
249
+ opacity: 0.85;
250
+ }
251
+
208
252
  /*
209
253
  * Invert the monochrome terminal glyph against the brand background, exactly
210
254
  * as the file listing does for its selected rows. Colored agent logos carry
@@ -0,0 +1,80 @@
1
+ /*
2
+ * The read-only walkthrough panel (`xtralab:walkthrough`) in the side area. A
3
+ * scrollable column of step cards, each holding rendered Markdown, an optional
4
+ * embedded visual, and an optional "jump to code" button.
5
+ */
6
+
7
+ .jp-xtralab-Walkthrough {
8
+ overflow-y: auto;
9
+ padding: 4px 0;
10
+ background: var(--jp-layout-color1);
11
+ color: var(--jp-ui-font-color1);
12
+ font-size: var(--jp-ui-font-size1);
13
+ }
14
+
15
+ .jp-xtralab-Walkthrough-step {
16
+ padding: 10px 12px 14px;
17
+ border-bottom: 1px solid var(--jp-border-color2);
18
+ }
19
+
20
+ .jp-xtralab-Walkthrough-stepTitle {
21
+ margin: 0 0 6px;
22
+ font-size: var(--jp-ui-font-size2);
23
+ font-weight: 600;
24
+ color: var(--jp-ui-font-color0);
25
+ }
26
+
27
+ .jp-xtralab-Walkthrough-content {
28
+ overflow-x: auto;
29
+ }
30
+
31
+ .jp-xtralab-Walkthrough-jumpRow {
32
+ margin-top: 8px;
33
+ }
34
+
35
+ /* A subtle native-feeling button: UI font and neutral colors, like the rest of
36
+ the JupyterLab chrome, with a leading file icon and a hover background. */
37
+ .jp-xtralab-Walkthrough-jump {
38
+ display: inline-flex;
39
+ align-items: center;
40
+ gap: 4px;
41
+ max-width: 100%;
42
+ box-sizing: border-box;
43
+ padding: 2px 8px 2px 5px;
44
+ border: var(--jp-border-width) solid var(--jp-border-color2);
45
+ border-radius: var(--jp-border-radius);
46
+ background: none;
47
+ color: var(--jp-ui-font-color1);
48
+ font-family: var(--jp-ui-font-family);
49
+ font-size: var(--jp-ui-font-size1);
50
+ line-height: 1.5;
51
+ cursor: pointer;
52
+ }
53
+
54
+ .jp-xtralab-Walkthrough-jump:hover {
55
+ background-color: var(--jp-layout-color2);
56
+ border-color: var(--jp-border-color1);
57
+ }
58
+
59
+ .jp-xtralab-Walkthrough-jump:focus-visible {
60
+ outline: none;
61
+ border-color: var(--jp-brand-color1);
62
+ box-shadow: inset 0 0 0 1px var(--jp-brand-color1);
63
+ }
64
+
65
+ .jp-xtralab-Walkthrough-jumpIcon {
66
+ display: flex;
67
+ flex: 0 0 auto;
68
+ align-items: center;
69
+ }
70
+
71
+ .jp-xtralab-Walkthrough-jumpIcon svg {
72
+ width: 14px;
73
+ height: 14px;
74
+ }
75
+
76
+ .jp-xtralab-Walkthrough-jumpLabel {
77
+ overflow: hidden;
78
+ text-overflow: ellipsis;
79
+ white-space: nowrap;
80
+ }