@volter-ai-dev/supercode-ui 0.1.27 → 0.1.29

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
@@ -550,7 +550,7 @@ function readSessions(value) {
550
550
  messages: nullableNumber(row.messages),
551
551
  active: row.active === true,
552
552
  live: row.live === true,
553
- runtimeStatus: row.runtimeStatus === "busy" || row.runtimeStatus === "idle" ? row.runtimeStatus : null
553
+ runtimeStatus: row.runtimeStatus === "running" || row.runtimeStatus === "busy" || row.runtimeStatus === "idle" ? row.runtimeStatus : null
554
554
  }];
555
555
  });
556
556
  }
@@ -688,6 +688,7 @@ function sessionActivity(state, row) {
688
688
  const attention = state.attention.find((item) => item.key === row.key)?.kind;
689
689
  if (attention) return attention;
690
690
  if (row.runtimeStatus === "busy") return "working";
691
+ if (row.runtimeStatus === "running") return "running";
691
692
  if (row.live || row.runtimeStatus === "idle") return "recent";
692
693
  return "idle";
693
694
  }
@@ -745,7 +746,7 @@ function activitySummary(entries) {
745
746
  function canContinueHere(state) {
746
747
  if (state.mode !== "mirror" || state.canSend) return false;
747
748
  const row = state.attached?.key ? state.sessions.find((item) => item.key === state.attached.key) : null;
748
- return state.canResume && row?.runtimeStatus !== "busy" && row?.runtimeStatus !== "idle";
749
+ return state.canResume && row?.runtimeStatus !== "running" && row?.runtimeStatus !== "busy" && row?.runtimeStatus !== "idle";
749
750
  }
750
751
  function operationLabel(operation) {
751
752
  if (!operation) return "";
@@ -1092,7 +1093,7 @@ function ContinuationBar({ state, adapter, labels = DEFAULT_LABELS }) {
1092
1093
  if (state.mode !== "mirror" || state.canSend) return null;
1093
1094
  const attached = state.attached;
1094
1095
  const row = attached?.key ? state.sessions.find((item) => item.key === attached.key) : null;
1095
- const activeElsewhere = row?.runtimeStatus === "busy" || row?.runtimeStatus === "idle";
1096
+ const activeElsewhere = row?.runtimeStatus === "running" || row?.runtimeStatus === "busy" || row?.runtimeStatus === "idle";
1096
1097
  const resume = canContinueHere(state);
1097
1098
  const join = state.canAttach;
1098
1099
  const branch = state.canBranch;
@@ -1995,11 +1996,12 @@ var sessionListMemory = /* @__PURE__ */ new Map();
1995
1996
  function sessionPathParts(value) {
1996
1997
  const complete = String(value ?? "").replaceAll("\\", "/");
1997
1998
  const boundary = complete.lastIndexOf("/");
1998
- if (boundary <= 0) return { complete, leading: complete, trailing: "" };
1999
+ if (boundary < 0) return { complete, leading: complete, separator: "", trailing: "" };
1999
2000
  return {
2000
2001
  complete,
2001
2002
  leading: complete.slice(0, boundary),
2002
- trailing: complete.slice(boundary)
2003
+ separator: "/",
2004
+ trailing: complete.slice(boundary + 1)
2003
2005
  };
2004
2006
  }
2005
2007
  function SessionRow({ row, state, onOpen }) {
@@ -2019,6 +2021,7 @@ function SessionRow({ row, state, onOpen }) {
2019
2021
  ] }),
2020
2022
  path.complete ? /* @__PURE__ */ jsxs6("small", { class: "scui-session-path", title: row.cwd, children: [
2021
2023
  /* @__PURE__ */ jsx7("span", { class: "scui-session-path-leading", children: path.leading }),
2024
+ path.separator ? /* @__PURE__ */ jsx7("span", { class: "scui-session-path-separator", children: path.separator }) : null,
2022
2025
  path.trailing ? /* @__PURE__ */ jsx7("span", { class: "scui-session-path-trailing", children: path.trailing }) : null
2023
2026
  ] }) : null,
2024
2027
  preview || unreadCount ? /* @__PURE__ */ jsxs6("span", { class: "scui-session-preview", children: [
package/composer.mjs CHANGED
@@ -65,7 +65,7 @@ function harnessDisplayName(id) {
65
65
  function canContinueHere(state) {
66
66
  if (state.mode !== "mirror" || state.canSend) return false;
67
67
  const row = state.attached?.key ? state.sessions.find((item) => item.key === state.attached.key) : null;
68
- return state.canResume && row?.runtimeStatus !== "busy" && row?.runtimeStatus !== "idle";
68
+ return state.canResume && row?.runtimeStatus !== "running" && row?.runtimeStatus !== "busy" && row?.runtimeStatus !== "idle";
69
69
  }
70
70
  function isSendKey(event) {
71
71
  return event.key === "Enter" && !event.shiftKey && !event.isComposing;
@@ -252,7 +252,7 @@ function ContinuationBar({ state, adapter, labels = DEFAULT_LABELS }) {
252
252
  if (state.mode !== "mirror" || state.canSend) return null;
253
253
  const attached = state.attached;
254
254
  const row = attached?.key ? state.sessions.find((item) => item.key === attached.key) : null;
255
- const activeElsewhere = row?.runtimeStatus === "busy" || row?.runtimeStatus === "idle";
255
+ const activeElsewhere = row?.runtimeStatus === "running" || row?.runtimeStatus === "busy" || row?.runtimeStatus === "idle";
256
256
  const resume = canContinueHere(state);
257
257
  const join = state.canAttach;
258
258
  const branch = state.canBranch;
package/core.mjs CHANGED
@@ -545,7 +545,7 @@ function readSessions(value) {
545
545
  messages: nullableNumber(row.messages),
546
546
  active: row.active === true,
547
547
  live: row.live === true,
548
- runtimeStatus: row.runtimeStatus === 'busy' || row.runtimeStatus === 'idle' ? row.runtimeStatus : null,
548
+ runtimeStatus: row.runtimeStatus === 'running' || row.runtimeStatus === 'busy' || row.runtimeStatus === 'idle' ? row.runtimeStatus : null,
549
549
  }];
550
550
  });
551
551
  }
@@ -729,6 +729,7 @@ export function sessionActivity(state, row) {
729
729
  const attention = state.attention.find((item) => item.key === row.key)?.kind;
730
730
  if (attention) return attention;
731
731
  if (row.runtimeStatus === 'busy') return 'working';
732
+ if (row.runtimeStatus === 'running') return 'running';
732
733
  if (row.live || row.runtimeStatus === 'idle') return 'recent';
733
734
  return 'idle';
734
735
  }
@@ -793,7 +794,7 @@ export function activitySummary(entries) {
793
794
  export function canContinueHere(state) {
794
795
  if (state.mode !== 'mirror' || state.canSend) return false;
795
796
  const row = state.attached?.key ? state.sessions.find((item) => item.key === state.attached.key) : null;
796
- return state.canResume && row?.runtimeStatus !== 'busy' && row?.runtimeStatus !== 'idle';
797
+ return state.canResume && row?.runtimeStatus !== 'running' && row?.runtimeStatus !== 'busy' && row?.runtimeStatus !== 'idle';
797
798
  }
798
799
 
799
800
  export function operationLabel(operation) {
package/embed.mjs CHANGED
@@ -553,7 +553,7 @@ function readSessions(value) {
553
553
  messages: nullableNumber(row.messages),
554
554
  active: row.active === true,
555
555
  live: row.live === true,
556
- runtimeStatus: row.runtimeStatus === "busy" || row.runtimeStatus === "idle" ? row.runtimeStatus : null
556
+ runtimeStatus: row.runtimeStatus === "running" || row.runtimeStatus === "busy" || row.runtimeStatus === "idle" ? row.runtimeStatus : null
557
557
  }];
558
558
  });
559
559
  }
@@ -691,6 +691,7 @@ function sessionActivity(state, row) {
691
691
  const attention = state.attention.find((item) => item.key === row.key)?.kind;
692
692
  if (attention) return attention;
693
693
  if (row.runtimeStatus === "busy") return "working";
694
+ if (row.runtimeStatus === "running") return "running";
694
695
  if (row.live || row.runtimeStatus === "idle") return "recent";
695
696
  return "idle";
696
697
  }
@@ -748,7 +749,7 @@ function activitySummary(entries) {
748
749
  function canContinueHere(state) {
749
750
  if (state.mode !== "mirror" || state.canSend) return false;
750
751
  const row = state.attached?.key ? state.sessions.find((item) => item.key === state.attached.key) : null;
751
- return state.canResume && row?.runtimeStatus !== "busy" && row?.runtimeStatus !== "idle";
752
+ return state.canResume && row?.runtimeStatus !== "running" && row?.runtimeStatus !== "busy" && row?.runtimeStatus !== "idle";
752
753
  }
753
754
  function operationLabel(operation) {
754
755
  if (!operation) return "";
@@ -1098,7 +1099,7 @@ function ContinuationBar({ state, adapter, labels = DEFAULT_LABELS }) {
1098
1099
  if (state.mode !== "mirror" || state.canSend) return null;
1099
1100
  const attached = state.attached;
1100
1101
  const row = attached?.key ? state.sessions.find((item) => item.key === attached.key) : null;
1101
- const activeElsewhere = row?.runtimeStatus === "busy" || row?.runtimeStatus === "idle";
1102
+ const activeElsewhere = row?.runtimeStatus === "running" || row?.runtimeStatus === "busy" || row?.runtimeStatus === "idle";
1102
1103
  const resume = canContinueHere(state);
1103
1104
  const join = state.canAttach;
1104
1105
  const branch = state.canBranch;
@@ -1974,11 +1975,12 @@ var sessionListMemory = /* @__PURE__ */ new Map();
1974
1975
  function sessionPathParts(value) {
1975
1976
  const complete = String(value ?? "").replaceAll("\\", "/");
1976
1977
  const boundary = complete.lastIndexOf("/");
1977
- if (boundary <= 0) return { complete, leading: complete, trailing: "" };
1978
+ if (boundary < 0) return { complete, leading: complete, separator: "", trailing: "" };
1978
1979
  return {
1979
1980
  complete,
1980
1981
  leading: complete.slice(0, boundary),
1981
- trailing: complete.slice(boundary)
1982
+ separator: "/",
1983
+ trailing: complete.slice(boundary + 1)
1982
1984
  };
1983
1985
  }
1984
1986
  function SessionRow({ row, state, onOpen }) {
@@ -1998,6 +2000,7 @@ function SessionRow({ row, state, onOpen }) {
1998
2000
  ] }),
1999
2001
  path.complete ? /* @__PURE__ */ jsxs6("small", { class: "scui-session-path", title: row.cwd, children: [
2000
2002
  /* @__PURE__ */ jsx7("span", { class: "scui-session-path-leading", children: path.leading }),
2003
+ path.separator ? /* @__PURE__ */ jsx7("span", { class: "scui-session-path-separator", children: path.separator }) : null,
2001
2004
  path.trailing ? /* @__PURE__ */ jsx7("span", { class: "scui-session-path-trailing", children: path.trailing }) : null
2002
2005
  ] }) : null,
2003
2006
  preview || unreadCount ? /* @__PURE__ */ jsxs6("span", { class: "scui-session-preview", children: [
package/index.d.ts CHANGED
@@ -5,7 +5,7 @@ export type UiTone = 'live' | 'warn' | 'dead' | 'off';
5
5
  export type StartupPhase = 'connecting' | 'starting' | 'discovering' | 'ready';
6
6
  export type SessionMode = 'none' | 'control' | 'mirror';
7
7
  export type ControlStrategy = 'start' | 'resume' | 'attach' | 'branch' | 'reduce' | null;
8
- export type SessionActivity = 'idle' | 'recent' | 'working' | 'needs-input' | 'finished' | 'failed' | 'unseen';
8
+ export type SessionActivity = 'idle' | 'recent' | 'running' | 'working' | 'needs-input' | 'finished' | 'failed' | 'unseen';
9
9
 
10
10
  export interface HarnessOption {
11
11
  id: HarnessId;
@@ -28,7 +28,7 @@ export interface SessionRowModel {
28
28
  messages: number | null;
29
29
  active: boolean;
30
30
  live: boolean;
31
- runtimeStatus: 'busy' | 'idle' | null;
31
+ runtimeStatus: 'running' | 'busy' | 'idle' | null;
32
32
  }
33
33
 
34
34
  export interface AttachedSessionModel {
package/messenger.mjs CHANGED
@@ -550,7 +550,7 @@ function readSessions(value) {
550
550
  messages: nullableNumber(row.messages),
551
551
  active: row.active === true,
552
552
  live: row.live === true,
553
- runtimeStatus: row.runtimeStatus === "busy" || row.runtimeStatus === "idle" ? row.runtimeStatus : null
553
+ runtimeStatus: row.runtimeStatus === "running" || row.runtimeStatus === "busy" || row.runtimeStatus === "idle" ? row.runtimeStatus : null
554
554
  }];
555
555
  });
556
556
  }
@@ -688,6 +688,7 @@ function sessionActivity(state, row) {
688
688
  const attention = state.attention.find((item) => item.key === row.key)?.kind;
689
689
  if (attention) return attention;
690
690
  if (row.runtimeStatus === "busy") return "working";
691
+ if (row.runtimeStatus === "running") return "running";
691
692
  if (row.live || row.runtimeStatus === "idle") return "recent";
692
693
  return "idle";
693
694
  }
@@ -745,7 +746,7 @@ function activitySummary(entries) {
745
746
  function canContinueHere(state) {
746
747
  if (state.mode !== "mirror" || state.canSend) return false;
747
748
  const row = state.attached?.key ? state.sessions.find((item) => item.key === state.attached.key) : null;
748
- return state.canResume && row?.runtimeStatus !== "busy" && row?.runtimeStatus !== "idle";
749
+ return state.canResume && row?.runtimeStatus !== "running" && row?.runtimeStatus !== "busy" && row?.runtimeStatus !== "idle";
749
750
  }
750
751
  function operationLabel(operation) {
751
752
  if (!operation) return "";
@@ -1095,7 +1096,7 @@ function ContinuationBar({ state, adapter, labels = DEFAULT_LABELS }) {
1095
1096
  if (state.mode !== "mirror" || state.canSend) return null;
1096
1097
  const attached = state.attached;
1097
1098
  const row = attached?.key ? state.sessions.find((item) => item.key === attached.key) : null;
1098
- const activeElsewhere = row?.runtimeStatus === "busy" || row?.runtimeStatus === "idle";
1099
+ const activeElsewhere = row?.runtimeStatus === "running" || row?.runtimeStatus === "busy" || row?.runtimeStatus === "idle";
1099
1100
  const resume = canContinueHere(state);
1100
1101
  const join = state.canAttach;
1101
1102
  const branch = state.canBranch;
@@ -1971,11 +1972,12 @@ var sessionListMemory = /* @__PURE__ */ new Map();
1971
1972
  function sessionPathParts(value) {
1972
1973
  const complete = String(value ?? "").replaceAll("\\", "/");
1973
1974
  const boundary = complete.lastIndexOf("/");
1974
- if (boundary <= 0) return { complete, leading: complete, trailing: "" };
1975
+ if (boundary < 0) return { complete, leading: complete, separator: "", trailing: "" };
1975
1976
  return {
1976
1977
  complete,
1977
1978
  leading: complete.slice(0, boundary),
1978
- trailing: complete.slice(boundary)
1979
+ separator: "/",
1980
+ trailing: complete.slice(boundary + 1)
1979
1981
  };
1980
1982
  }
1981
1983
  function SessionRow({ row, state, onOpen }) {
@@ -1995,6 +1997,7 @@ function SessionRow({ row, state, onOpen }) {
1995
1997
  ] }),
1996
1998
  path.complete ? /* @__PURE__ */ jsxs6("small", { class: "scui-session-path", title: row.cwd, children: [
1997
1999
  /* @__PURE__ */ jsx7("span", { class: "scui-session-path-leading", children: path.leading }),
2000
+ path.separator ? /* @__PURE__ */ jsx7("span", { class: "scui-session-path-separator", children: path.separator }) : null,
1998
2001
  path.trailing ? /* @__PURE__ */ jsx7("span", { class: "scui-session-path-trailing", children: path.trailing }) : null
1999
2002
  ] }) : null,
2000
2003
  preview || unreadCount ? /* @__PURE__ */ jsxs6("span", { class: "scui-session-preview", children: [
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@volter-ai-dev/supercode-ui",
3
- "version": "0.1.27",
3
+ "version": "0.1.29",
4
4
  "type": "module",
5
5
  "description": "Composable default UI kit for Supercode-powered coding-agent experiences",
6
6
  "exports": {
package/sessions.mjs CHANGED
@@ -72,6 +72,7 @@ function sessionActivity(state, row) {
72
72
  const attention = state.attention.find((item) => item.key === row.key)?.kind;
73
73
  if (attention) return attention;
74
74
  if (row.runtimeStatus === "busy") return "working";
75
+ if (row.runtimeStatus === "running") return "running";
75
76
  if (row.live || row.runtimeStatus === "idle") return "recent";
76
77
  return "idle";
77
78
  }
@@ -282,11 +283,12 @@ var sessionListMemory = /* @__PURE__ */ new Map();
282
283
  function sessionPathParts(value) {
283
284
  const complete = String(value ?? "").replaceAll("\\", "/");
284
285
  const boundary = complete.lastIndexOf("/");
285
- if (boundary <= 0) return { complete, leading: complete, trailing: "" };
286
+ if (boundary < 0) return { complete, leading: complete, separator: "", trailing: "" };
286
287
  return {
287
288
  complete,
288
289
  leading: complete.slice(0, boundary),
289
- trailing: complete.slice(boundary)
290
+ separator: "/",
291
+ trailing: complete.slice(boundary + 1)
290
292
  };
291
293
  }
292
294
  function SessionRow({ row, state, onOpen }) {
@@ -306,6 +308,7 @@ function SessionRow({ row, state, onOpen }) {
306
308
  ] }),
307
309
  path.complete ? /* @__PURE__ */ jsxs5("small", { class: "scui-session-path", title: row.cwd, children: [
308
310
  /* @__PURE__ */ jsx6("span", { class: "scui-session-path-leading", children: path.leading }),
311
+ path.separator ? /* @__PURE__ */ jsx6("span", { class: "scui-session-path-separator", children: path.separator }) : null,
309
312
  path.trailing ? /* @__PURE__ */ jsx6("span", { class: "scui-session-path-trailing", children: path.trailing }) : null
310
313
  ] }) : null,
311
314
  preview || unreadCount ? /* @__PURE__ */ jsxs5("span", { class: "scui-session-preview", children: [
package/styles.css CHANGED
@@ -74,6 +74,7 @@
74
74
  .scui-logo[data-harness="supercode"] { background:#111923 }
75
75
  .scui-logo > i { position:absolute; right:-5%; bottom:-5%; width:32%; height:32%; border:2px solid var(--scui-bg); border-radius:50%; background:var(--scui-muted) }
76
76
  .scui-logo[data-activity="working"] > i { background:var(--scui-accent); animation:scui-breathe 1.4s ease-in-out infinite }
77
+ .scui-logo[data-activity="running"] > i { background:var(--scui-positive) }
77
78
  .scui-logo[data-activity="needs-input"] > i { background:var(--scui-warning) }
78
79
  .scui-logo[data-activity="failed"] > i { background:var(--scui-danger) }
79
80
  .scui-logo[data-activity="finished"] > i,.scui-logo[data-activity="unseen"] > i { background:var(--scui-positive) }
@@ -99,7 +100,7 @@
99
100
  .scui-session-copy strong,.scui-session-copy span > small { overflow:hidden; text-overflow:ellipsis; white-space:nowrap }
100
101
  .scui-session-copy strong { flex:1; font-size:12.5px }.scui-session-title time { flex:none; color:var(--scui-muted); font-size:10px }
101
102
  .scui-session-path { display:flex; min-width:0; overflow:hidden; color:var(--scui-muted); font-size:9.5px; white-space:nowrap }
102
- .scui-session-path-leading { flex:0 1 auto; overflow:hidden; text-overflow:ellipsis }.scui-session-path-trailing { flex:none; max-width:58%; overflow:hidden; direction:rtl; text-align:left; text-overflow:ellipsis; unicode-bidi:plaintext }
103
+ .scui-session-path-leading { flex:0 1 auto; overflow:hidden; text-overflow:ellipsis }.scui-session-path-separator { flex:none }.scui-session-path-trailing { flex:none; max-width:58%; overflow:hidden; direction:rtl; text-align:left; text-overflow:ellipsis; unicode-bidi:plaintext }
103
104
  .scui-session-preview small { flex:1; min-width:0; color:var(--scui-muted); font-size:10.5px }.scui-session-preview b { display:grid; flex:none; min-width:16px; height:16px; padding:0 4px; place-items:center; border-radius:8px; background:var(--scui-accent); color:var(--scui-bg); font-size:9px; line-height:16px }
104
105
  .scui-session-copy em { overflow:hidden; color:var(--scui-danger); font-size:10px; font-style:normal; text-overflow:ellipsis; white-space:nowrap }
105
106
  .scui-load { display:block; margin:7px auto; padding:5px 10px; border:1px solid var(--scui-border); border-radius:8px; background:var(--scui-bg-raised); color:var(--scui-muted); cursor:pointer }.scui-load:disabled { opacity:.65; cursor:default }