@volter-ai-dev/supercode-ui 0.1.39 → 0.1.41

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/components.mjs CHANGED
@@ -2301,6 +2301,7 @@ function SessionList({ state, adapter, onOpen, onNew, onClose, components = {},
2301
2301
  const rowScroller = useRef5(null);
2302
2302
  const rows = filterSessions(state.sessions, query);
2303
2303
  const Row = components.SessionRow ?? SessionRow;
2304
+ const ListHeader = slots.listHeader;
2304
2305
  const BeforeSessions = slots.beforeSessions;
2305
2306
  const AfterSessions = slots.afterSessions;
2306
2307
  useLayoutEffect3(() => {
@@ -2327,7 +2328,7 @@ function SessionList({ state, adapter, onOpen, onNew, onClose, components = {},
2327
2328
  }
2328
2329
  };
2329
2330
  return /* @__PURE__ */ jsxs7("section", { className: "scui-list", ref: root, children: [
2330
- /* @__PURE__ */ jsxs7("header", { className: "scui-head", children: [
2331
+ ListHeader ? /* @__PURE__ */ jsx8(ListHeader, { state, adapter, value: { query, rows, onNew } }) : /* @__PURE__ */ jsxs7("header", { className: "scui-head", children: [
2331
2332
  /* @__PURE__ */ jsxs7("span", { className: "scui-head-copy", children: [
2332
2333
  /* @__PURE__ */ jsx8("strong", { children: labels.chats }),
2333
2334
  /* @__PURE__ */ jsxs7("small", { children: [
@@ -2458,14 +2459,9 @@ function HarnessSettingsPanel({ state, adapter, onClose, recommendedChange = nul
2458
2459
  }
2459
2460
  function HarnessReadiness({ harnesses, adapter }) {
2460
2461
  const blocked = harnesses.filter((item) => !item.startable);
2461
- if (!blocked.length) return null;
2462
- return /* @__PURE__ */ jsxs8("details", { className: "scui-readiness", open: !harnesses.some((item) => item.startable), children: [
2463
- /* @__PURE__ */ jsxs8("summary", { children: [
2464
- blocked.length,
2465
- " ",
2466
- blocked.length === 1 ? "harness needs" : "harnesses need",
2467
- " setup"
2468
- ] }),
2462
+ if (!blocked.length || harnesses.some((item) => item.startable)) return null;
2463
+ return /* @__PURE__ */ jsxs8("details", { className: "scui-readiness", open: true, children: [
2464
+ /* @__PURE__ */ jsx9("summary", { children: "No coding harness is ready" }),
2469
2465
  /* @__PURE__ */ jsx9("div", { children: blocked.map((item) => /* @__PURE__ */ jsxs8("section", { children: [
2470
2466
  /* @__PURE__ */ jsx9(HarnessLogo, { id: item.id, size: 25 }),
2471
2467
  /* @__PURE__ */ jsxs8("span", { children: [
package/embed.mjs CHANGED
@@ -2221,6 +2221,7 @@ function SessionList({ state, adapter, onOpen, onNew, onClose, components = {},
2221
2221
  const rowScroller = useRef5(null);
2222
2222
  const rows = filterSessions(state.sessions, query);
2223
2223
  const Row = components.SessionRow ?? SessionRow;
2224
+ const ListHeader = slots.listHeader;
2224
2225
  const BeforeSessions = slots.beforeSessions;
2225
2226
  const AfterSessions = slots.afterSessions;
2226
2227
  useLayoutEffect3(() => {
@@ -2247,7 +2248,7 @@ function SessionList({ state, adapter, onOpen, onNew, onClose, components = {},
2247
2248
  }
2248
2249
  };
2249
2250
  return /* @__PURE__ */ jsxs6("section", { className: "scui-list", ref: root, children: [
2250
- /* @__PURE__ */ jsxs6("header", { className: "scui-head", children: [
2251
+ ListHeader ? /* @__PURE__ */ jsx7(ListHeader, { state, adapter, value: { query, rows, onNew } }) : /* @__PURE__ */ jsxs6("header", { className: "scui-head", children: [
2251
2252
  /* @__PURE__ */ jsxs6("span", { className: "scui-head-copy", children: [
2252
2253
  /* @__PURE__ */ jsx7("strong", { children: labels.chats }),
2253
2254
  /* @__PURE__ */ jsxs6("small", { children: [
@@ -2378,14 +2379,9 @@ function HarnessSettingsPanel({ state, adapter, onClose, recommendedChange = nul
2378
2379
  }
2379
2380
  function HarnessReadiness({ harnesses, adapter }) {
2380
2381
  const blocked = harnesses.filter((item) => !item.startable);
2381
- if (!blocked.length) return null;
2382
- return /* @__PURE__ */ jsxs7("details", { className: "scui-readiness", open: !harnesses.some((item) => item.startable), children: [
2383
- /* @__PURE__ */ jsxs7("summary", { children: [
2384
- blocked.length,
2385
- " ",
2386
- blocked.length === 1 ? "harness needs" : "harnesses need",
2387
- " setup"
2388
- ] }),
2382
+ if (!blocked.length || harnesses.some((item) => item.startable)) return null;
2383
+ return /* @__PURE__ */ jsxs7("details", { className: "scui-readiness", open: true, children: [
2384
+ /* @__PURE__ */ jsx8("summary", { children: "No coding harness is ready" }),
2389
2385
  /* @__PURE__ */ jsx8("div", { children: blocked.map((item) => /* @__PURE__ */ jsxs7("section", { children: [
2390
2386
  /* @__PURE__ */ jsx8(HarnessLogo, { id: item.id, size: 25 }),
2391
2387
  /* @__PURE__ */ jsxs7("span", { children: [
package/index.d.ts CHANGED
@@ -455,6 +455,8 @@ export interface AgentActivityLauncherProps {
455
455
 
456
456
  export interface MessengerSlots {
457
457
  header?: ComponentType<ComponentOverrideProps>;
458
+ /** Replace the conversation-list header. A component returning `null` delegates all list chrome to its host. */
459
+ listHeader?: ComponentType<ComponentOverrideProps<{ query: string; rows: SessionRowModel[]; onNew?(): void }>>;
458
460
  /** Add a compact consumer control to every default messenger header. `value` is the current view. */
459
461
  headerActions?: ComponentType<ComponentOverrideProps<'list' | 'chat' | 'new'>>;
460
462
  /** Host-owned rows rendered inside the searchable conversation scroller. */
package/messenger.mjs CHANGED
@@ -2218,6 +2218,7 @@ function SessionList({ state, adapter, onOpen, onNew, onClose, components = {},
2218
2218
  const rowScroller = useRef5(null);
2219
2219
  const rows = filterSessions(state.sessions, query);
2220
2220
  const Row = components.SessionRow ?? SessionRow;
2221
+ const ListHeader = slots.listHeader;
2221
2222
  const BeforeSessions = slots.beforeSessions;
2222
2223
  const AfterSessions = slots.afterSessions;
2223
2224
  useLayoutEffect3(() => {
@@ -2244,7 +2245,7 @@ function SessionList({ state, adapter, onOpen, onNew, onClose, components = {},
2244
2245
  }
2245
2246
  };
2246
2247
  return /* @__PURE__ */ jsxs6("section", { className: "scui-list", ref: root, children: [
2247
- /* @__PURE__ */ jsxs6("header", { className: "scui-head", children: [
2248
+ ListHeader ? /* @__PURE__ */ jsx7(ListHeader, { state, adapter, value: { query, rows, onNew } }) : /* @__PURE__ */ jsxs6("header", { className: "scui-head", children: [
2248
2249
  /* @__PURE__ */ jsxs6("span", { className: "scui-head-copy", children: [
2249
2250
  /* @__PURE__ */ jsx7("strong", { children: labels.chats }),
2250
2251
  /* @__PURE__ */ jsxs6("small", { children: [
@@ -2375,14 +2376,9 @@ function HarnessSettingsPanel({ state, adapter, onClose, recommendedChange = nul
2375
2376
  }
2376
2377
  function HarnessReadiness({ harnesses, adapter }) {
2377
2378
  const blocked = harnesses.filter((item) => !item.startable);
2378
- if (!blocked.length) return null;
2379
- return /* @__PURE__ */ jsxs7("details", { className: "scui-readiness", open: !harnesses.some((item) => item.startable), children: [
2380
- /* @__PURE__ */ jsxs7("summary", { children: [
2381
- blocked.length,
2382
- " ",
2383
- blocked.length === 1 ? "harness needs" : "harnesses need",
2384
- " setup"
2385
- ] }),
2379
+ if (!blocked.length || harnesses.some((item) => item.startable)) return null;
2380
+ return /* @__PURE__ */ jsxs7("details", { className: "scui-readiness", open: true, children: [
2381
+ /* @__PURE__ */ jsx8("summary", { children: "No coding harness is ready" }),
2386
2382
  /* @__PURE__ */ jsx8("div", { children: blocked.map((item) => /* @__PURE__ */ jsxs7("section", { children: [
2387
2383
  /* @__PURE__ */ jsx8(HarnessLogo, { id: item.id, size: 25 }),
2388
2384
  /* @__PURE__ */ jsxs7("span", { children: [
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@volter-ai-dev/supercode-ui",
3
- "version": "0.1.39",
3
+ "version": "0.1.41",
4
4
  "type": "module",
5
5
  "description": "Composable default UI kit for Supercode-powered coding-agent experiences",
6
6
  "exports": {
@@ -2301,6 +2301,7 @@ function SessionList({ state, adapter, onOpen, onNew, onClose, components = {},
2301
2301
  const rowScroller = useRef5(null);
2302
2302
  const rows = filterSessions(state.sessions, query);
2303
2303
  const Row = components.SessionRow ?? SessionRow;
2304
+ const ListHeader = slots.listHeader;
2304
2305
  const BeforeSessions = slots.beforeSessions;
2305
2306
  const AfterSessions = slots.afterSessions;
2306
2307
  useLayoutEffect3(() => {
@@ -2327,7 +2328,7 @@ function SessionList({ state, adapter, onOpen, onNew, onClose, components = {},
2327
2328
  }
2328
2329
  };
2329
2330
  return /* @__PURE__ */ jsxs7("section", { className: "scui-list", ref: root, children: [
2330
- /* @__PURE__ */ jsxs7("header", { className: "scui-head", children: [
2331
+ ListHeader ? /* @__PURE__ */ jsx8(ListHeader, { state, adapter, value: { query, rows, onNew } }) : /* @__PURE__ */ jsxs7("header", { className: "scui-head", children: [
2331
2332
  /* @__PURE__ */ jsxs7("span", { className: "scui-head-copy", children: [
2332
2333
  /* @__PURE__ */ jsx8("strong", { children: labels.chats }),
2333
2334
  /* @__PURE__ */ jsxs7("small", { children: [
@@ -2458,14 +2459,9 @@ function HarnessSettingsPanel({ state, adapter, onClose, recommendedChange = nul
2458
2459
  }
2459
2460
  function HarnessReadiness({ harnesses, adapter }) {
2460
2461
  const blocked = harnesses.filter((item) => !item.startable);
2461
- if (!blocked.length) return null;
2462
- return /* @__PURE__ */ jsxs8("details", { className: "scui-readiness", open: !harnesses.some((item) => item.startable), children: [
2463
- /* @__PURE__ */ jsxs8("summary", { children: [
2464
- blocked.length,
2465
- " ",
2466
- blocked.length === 1 ? "harness needs" : "harnesses need",
2467
- " setup"
2468
- ] }),
2462
+ if (!blocked.length || harnesses.some((item) => item.startable)) return null;
2463
+ return /* @__PURE__ */ jsxs8("details", { className: "scui-readiness", open: true, children: [
2464
+ /* @__PURE__ */ jsx9("summary", { children: "No coding harness is ready" }),
2469
2465
  /* @__PURE__ */ jsx9("div", { children: blocked.map((item) => /* @__PURE__ */ jsxs8("section", { children: [
2470
2466
  /* @__PURE__ */ jsx9(HarnessLogo, { id: item.id, size: 25 }),
2471
2467
  /* @__PURE__ */ jsxs8("span", { children: [
@@ -2218,6 +2218,7 @@ function SessionList({ state, adapter, onOpen, onNew, onClose, components = {},
2218
2218
  const rowScroller = useRef5(null);
2219
2219
  const rows = filterSessions(state.sessions, query);
2220
2220
  const Row = components.SessionRow ?? SessionRow;
2221
+ const ListHeader = slots.listHeader;
2221
2222
  const BeforeSessions = slots.beforeSessions;
2222
2223
  const AfterSessions = slots.afterSessions;
2223
2224
  useLayoutEffect3(() => {
@@ -2244,7 +2245,7 @@ function SessionList({ state, adapter, onOpen, onNew, onClose, components = {},
2244
2245
  }
2245
2246
  };
2246
2247
  return /* @__PURE__ */ jsxs6("section", { className: "scui-list", ref: root, children: [
2247
- /* @__PURE__ */ jsxs6("header", { className: "scui-head", children: [
2248
+ ListHeader ? /* @__PURE__ */ jsx7(ListHeader, { state, adapter, value: { query, rows, onNew } }) : /* @__PURE__ */ jsxs6("header", { className: "scui-head", children: [
2248
2249
  /* @__PURE__ */ jsxs6("span", { className: "scui-head-copy", children: [
2249
2250
  /* @__PURE__ */ jsx7("strong", { children: labels.chats }),
2250
2251
  /* @__PURE__ */ jsxs6("small", { children: [
@@ -2375,14 +2376,9 @@ function HarnessSettingsPanel({ state, adapter, onClose, recommendedChange = nul
2375
2376
  }
2376
2377
  function HarnessReadiness({ harnesses, adapter }) {
2377
2378
  const blocked = harnesses.filter((item) => !item.startable);
2378
- if (!blocked.length) return null;
2379
- return /* @__PURE__ */ jsxs7("details", { className: "scui-readiness", open: !harnesses.some((item) => item.startable), children: [
2380
- /* @__PURE__ */ jsxs7("summary", { children: [
2381
- blocked.length,
2382
- " ",
2383
- blocked.length === 1 ? "harness needs" : "harnesses need",
2384
- " setup"
2385
- ] }),
2379
+ if (!blocked.length || harnesses.some((item) => item.startable)) return null;
2380
+ return /* @__PURE__ */ jsxs7("details", { className: "scui-readiness", open: true, children: [
2381
+ /* @__PURE__ */ jsx8("summary", { children: "No coding harness is ready" }),
2386
2382
  /* @__PURE__ */ jsx8("div", { children: blocked.map((item) => /* @__PURE__ */ jsxs7("section", { children: [
2387
2383
  /* @__PURE__ */ jsx8(HarnessLogo, { id: item.id, size: 25 }),
2388
2384
  /* @__PURE__ */ jsxs7("span", { children: [
@@ -365,6 +365,7 @@ function SessionList({ state, adapter, onOpen, onNew, onClose, components = {},
365
365
  const rowScroller = useRef4(null);
366
366
  const rows = filterSessions(state.sessions, query);
367
367
  const Row = components.SessionRow ?? SessionRow;
368
+ const ListHeader = slots.listHeader;
368
369
  const BeforeSessions = slots.beforeSessions;
369
370
  const AfterSessions = slots.afterSessions;
370
371
  useLayoutEffect2(() => {
@@ -391,7 +392,7 @@ function SessionList({ state, adapter, onOpen, onNew, onClose, components = {},
391
392
  }
392
393
  };
393
394
  return /* @__PURE__ */ jsxs5("section", { className: "scui-list", ref: root, children: [
394
- /* @__PURE__ */ jsxs5("header", { className: "scui-head", children: [
395
+ ListHeader ? /* @__PURE__ */ jsx6(ListHeader, { state, adapter, value: { query, rows, onNew } }) : /* @__PURE__ */ jsxs5("header", { className: "scui-head", children: [
395
396
  /* @__PURE__ */ jsxs5("span", { className: "scui-head-copy", children: [
396
397
  /* @__PURE__ */ jsx6("strong", { children: labels.chats }),
397
398
  /* @__PURE__ */ jsxs5("small", { children: [
@@ -289,14 +289,9 @@ function HarnessSettingsPanel({ state, adapter, onClose, recommendedChange = nul
289
289
  }
290
290
  function HarnessReadiness({ harnesses, adapter }) {
291
291
  const blocked = harnesses.filter((item) => !item.startable);
292
- if (!blocked.length) return null;
293
- return /* @__PURE__ */ jsxs3("details", { className: "scui-readiness", open: !harnesses.some((item) => item.startable), children: [
294
- /* @__PURE__ */ jsxs3("summary", { children: [
295
- blocked.length,
296
- " ",
297
- blocked.length === 1 ? "harness needs" : "harnesses need",
298
- " setup"
299
- ] }),
292
+ if (!blocked.length || harnesses.some((item) => item.startable)) return null;
293
+ return /* @__PURE__ */ jsxs3("details", { className: "scui-readiness", open: true, children: [
294
+ /* @__PURE__ */ jsx3("summary", { children: "No coding harness is ready" }),
300
295
  /* @__PURE__ */ jsx3("div", { children: blocked.map((item) => /* @__PURE__ */ jsxs3("section", { children: [
301
296
  /* @__PURE__ */ jsx3(HarnessLogo, { id: item.id, size: 25 }),
302
297
  /* @__PURE__ */ jsxs3("span", { children: [
package/sessions.mjs CHANGED
@@ -365,6 +365,7 @@ function SessionList({ state, adapter, onOpen, onNew, onClose, components = {},
365
365
  const rowScroller = useRef4(null);
366
366
  const rows = filterSessions(state.sessions, query);
367
367
  const Row = components.SessionRow ?? SessionRow;
368
+ const ListHeader = slots.listHeader;
368
369
  const BeforeSessions = slots.beforeSessions;
369
370
  const AfterSessions = slots.afterSessions;
370
371
  useLayoutEffect2(() => {
@@ -391,7 +392,7 @@ function SessionList({ state, adapter, onOpen, onNew, onClose, components = {},
391
392
  }
392
393
  };
393
394
  return /* @__PURE__ */ jsxs5("section", { className: "scui-list", ref: root, children: [
394
- /* @__PURE__ */ jsxs5("header", { className: "scui-head", children: [
395
+ ListHeader ? /* @__PURE__ */ jsx6(ListHeader, { state, adapter, value: { query, rows, onNew } }) : /* @__PURE__ */ jsxs5("header", { className: "scui-head", children: [
395
396
  /* @__PURE__ */ jsxs5("span", { className: "scui-head-copy", children: [
396
397
  /* @__PURE__ */ jsx6("strong", { children: labels.chats }),
397
398
  /* @__PURE__ */ jsxs5("small", { children: [
package/settings.mjs CHANGED
@@ -289,14 +289,9 @@ function HarnessSettingsPanel({ state, adapter, onClose, recommendedChange = nul
289
289
  }
290
290
  function HarnessReadiness({ harnesses, adapter }) {
291
291
  const blocked = harnesses.filter((item) => !item.startable);
292
- if (!blocked.length) return null;
293
- return /* @__PURE__ */ jsxs3("details", { className: "scui-readiness", open: !harnesses.some((item) => item.startable), children: [
294
- /* @__PURE__ */ jsxs3("summary", { children: [
295
- blocked.length,
296
- " ",
297
- blocked.length === 1 ? "harness needs" : "harnesses need",
298
- " setup"
299
- ] }),
292
+ if (!blocked.length || harnesses.some((item) => item.startable)) return null;
293
+ return /* @__PURE__ */ jsxs3("details", { className: "scui-readiness", open: true, children: [
294
+ /* @__PURE__ */ jsx3("summary", { children: "No coding harness is ready" }),
300
295
  /* @__PURE__ */ jsx3("div", { children: blocked.map((item) => /* @__PURE__ */ jsxs3("section", { children: [
301
296
  /* @__PURE__ */ jsx3(HarnessLogo, { id: item.id, size: 25 }),
302
297
  /* @__PURE__ */ jsxs3("span", { children: [