jupyterlab_ai_code_assistants_extension 1.2.31 → 1.2.35

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/lib/core/panel.js CHANGED
@@ -1620,10 +1620,8 @@ export class AssistantSessionsPanel extends Widget {
1620
1620
  row.appendChild(this._renderIndicator(session));
1621
1621
  }
1622
1622
  // No star in the Favorites section - every row there is one by definition.
1623
- // The star sits before the time label and beside it: the label sizes to its
1624
- // own text, so the distance between the two is the row's gap on every row
1625
- // rather than however much shorter than "11mo ago" this label happens to
1626
- // be.
1623
+ // The star sits before the time so the minimum-width time column stays the
1624
+ // rightmost alignment anchor across all rows.
1627
1625
  if (session.favourite && sectionKey !== 'favourites') {
1628
1626
  // A marker, not a control. It carried a `title` that made it read as
1629
1627
  // one while a click fell through to the row and launched a terminal;
@@ -1636,8 +1634,8 @@ export class AssistantSessionsPanel extends Widget {
1636
1634
  starFilledIcon.element({ container: star });
1637
1635
  row.appendChild(star);
1638
1636
  }
1639
- // Always present, empty when the session carries no mtime, so every row
1640
- // has the same elements in the same order whatever the data holds.
1637
+ // Always present (empty without an mtime) so the star column keeps the
1638
+ // same anchor across every row in the panel.
1641
1639
  const time = document.createElement('span');
1642
1640
  time.className = 'jp-AiAssistantsPanel-rowTime';
1643
1641
  time.textContent = session.file_mtime
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "jupyterlab_ai_code_assistants_extension",
3
- "version": "1.2.31",
3
+ "version": "1.2.35",
4
4
  "description": "A full launcher and manager for every AI code assistant in JupyterLab - Claude Code, Codex, Kimi, Gemini and DeepSeek. Start, resume, fork, switch, and clean up CLI sessions from a side panel per assistant - one click lands you in the right terminal with the assistant already running, no duplicate tabs, no UUID hunting.",
5
5
  "keywords": [
6
6
  "jupyter",
package/src/core/panel.ts CHANGED
@@ -1927,10 +1927,8 @@ export class AssistantSessionsPanel extends Widget {
1927
1927
  }
1928
1928
 
1929
1929
  // No star in the Favorites section - every row there is one by definition.
1930
- // The star sits before the time label and beside it: the label sizes to its
1931
- // own text, so the distance between the two is the row's gap on every row
1932
- // rather than however much shorter than "11mo ago" this label happens to
1933
- // be.
1930
+ // The star sits before the time so the minimum-width time column stays the
1931
+ // rightmost alignment anchor across all rows.
1934
1932
  if (session.favourite && sectionKey !== 'favourites') {
1935
1933
  // A marker, not a control. It carried a `title` that made it read as
1936
1934
  // one while a click fell through to the row and launched a terminal;
@@ -1944,8 +1942,8 @@ export class AssistantSessionsPanel extends Widget {
1944
1942
  row.appendChild(star);
1945
1943
  }
1946
1944
 
1947
- // Always present, empty when the session carries no mtime, so every row
1948
- // has the same elements in the same order whatever the data holds.
1945
+ // Always present (empty without an mtime) so the star column keeps the
1946
+ // same anchor across every row in the panel.
1949
1947
  const time = document.createElement('span');
1950
1948
  time.className = 'jp-AiAssistantsPanel-rowTime';
1951
1949
  time.textContent = session.file_mtime
package/style/base.css CHANGED
@@ -13,6 +13,14 @@
13
13
  on purpose - the partial row is the scroll-continuation cue. */
14
14
  --aica-row-height: 24px;
15
15
 
16
+ /* Single source for the gap between the panel border and its content, on
17
+ both sides: the header, search field, error line, section headers and rows
18
+ all read it, so the title, the search field, the caret column and the
19
+ status-dot column keep one left edge. 4px, not 8px: the lists reserve a
20
+ scrollbar gutter as well, so 8px put the time column 23px from the right
21
+ border where the file browser's sits 12px from it. */
22
+ --aica-inset: 4px;
23
+
16
24
  display: flex;
17
25
  flex-direction: column;
18
26
  position: relative;
@@ -27,7 +35,7 @@
27
35
  .jp-AiAssistantsPanel-header {
28
36
  display: flex;
29
37
  align-items: center;
30
- padding: 4px 8px;
38
+ padding: 4px var(--aica-inset);
31
39
  border-bottom: 1px solid var(--jp-border-color2);
32
40
  background: var(--jp-layout-color2);
33
41
  flex: 0 0 auto;
@@ -87,7 +95,7 @@
87
95
  flex: 0 0 auto;
88
96
  display: flex;
89
97
  position: relative;
90
- margin: 4px 8px;
98
+ margin: 4px var(--aica-inset);
91
99
  }
92
100
 
93
101
  /* `display: flex` above would beat the user-agent `[hidden] { display: none }`,
@@ -169,7 +177,7 @@
169
177
  server must leave the other panels alone. */
170
178
  .jp-AiAssistantsPanel-error {
171
179
  flex: 0 0 auto;
172
- margin: 4px 8px;
180
+ margin: 4px var(--aica-inset);
173
181
  padding: 4px 6px;
174
182
  border-radius: 2px;
175
183
 
@@ -246,7 +254,7 @@
246
254
  display: flex;
247
255
  align-items: center;
248
256
  width: 100%;
249
- padding: 4px 8px;
257
+ padding: 4px var(--aica-inset);
250
258
  background: var(--jp-layout-color2);
251
259
  border: none;
252
260
  cursor: pointer;
@@ -305,7 +313,7 @@
305
313
  .jp-AiAssistantsPanel-row {
306
314
  display: flex;
307
315
  align-items: center;
308
- padding: 0 8px;
316
+ padding: 0 var(--aica-inset);
309
317
  height: var(--aica-row-height);
310
318
  line-height: var(--aica-row-height);
311
319
  cursor: pointer;
@@ -956,20 +964,21 @@ body[data-jp-theme-light='true'] .jp-AiAssistantsPanel-dotGlyph {
956
964
  color: var(--jp-layout-color1);
957
965
  }
958
966
 
959
- /* Last-activity time on session rows - dim, and ending on the same vertical
960
- line down the whole panel because it is the last item on a row whose name
961
- takes all the slack.
962
- The label sizes to its own text. A fixed 4.5em box held the difference
963
- between the label and the widest one ("11mo ago") open as empty space on its
964
- LEFT, which is where the favourite star sits, so the star stood 32px from a
965
- short label such as "now" and 6px from the longest - measured on the row
966
- markup against this stylesheet, 2026-09-23. Sizing to the text puts the star
967
- the row's own 6px gap from every label, and removes the one case the fixed
968
- box still got wrong: a label wider than the box overflowed it and broke the
969
- alignment the box was there to keep. Tabular figures keep the digits an even
970
- width, as the branch popup's twin already does. */
967
+ /* Last-activity time on session rows - dim, minimum-width right-aligned column so
968
+ values line up across rows; the star column sits before it. */
971
969
  .jp-AiAssistantsPanel-rowTime {
972
970
  flex: 0 0 auto;
971
+
972
+ /* 4.5em, not 4em: the longest label this column draws ("11mo ago") measures
973
+ 47.4px against a 43.3px box, so the one column promised as fixed-width
974
+ right-aligned went ragged on exactly the oldest rows. A minimum, not a
975
+ width: where system-ui is a wider face - DejaVu Sans on a stock Linux
976
+ desktop, 54.5px for the same label - a fixed box let the label spill 5.8px
977
+ past the column's right edge; a minimum grows that one box leftward
978
+ instead, so the labels stay aligned and only that row's star moves.
979
+ Tabular figures keep the digits aligned down the column, as the branch
980
+ popup's twin already does. */
981
+ min-width: 4.5em;
973
982
  white-space: nowrap;
974
983
  text-align: right;
975
984
  color: var(--jp-ui-font-color2);