pilotswarm 0.5.36 → 0.5.38
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/package.json +3 -3
- package/tui/src/app.js +0 -4
- package/tui/src/index.js +0 -9
- package/ui/core/src/canvas-actions.js +148 -0
- package/ui/core/src/commands.js +0 -1
- package/ui/core/src/controller.js +296 -21
- package/ui/core/src/history.js +134 -1
- package/ui/core/src/index.js +1 -0
- package/ui/core/src/reducer.js +407 -19
- package/ui/core/src/selectors.js +223 -154
- package/ui/core/src/state.js +139 -2
- package/ui/core/src/themes/index.js +1 -1
- package/ui/react/src/components.js +1 -7
- package/ui/react/src/web-app.js +1719 -366
- package/web/auth/config.js +3 -0
- package/web/auth/index.js +8 -1
- package/web/auth/normalize/proxy.js +48 -0
- package/web/auth/providers/proxy.js +141 -0
- package/web/dist/assets/{abnfDiagram-VRR7QNED-LOLCtsns.js → abnfDiagram-VRR7QNED-DrJhXhSQ.js} +1 -1
- package/web/dist/assets/{arc-BE-jVDEi.js → arc-BEaG9DWd.js} +1 -1
- package/web/dist/assets/{architectureDiagram-ZJ3FMSHR-CdmUjwtj.js → architectureDiagram-ZJ3FMSHR-D9fc1Imx.js} +1 -1
- package/web/dist/assets/{blockDiagram-677ZJIJ3-NZ4TOa8L.js → blockDiagram-677ZJIJ3-rS5Eikvt.js} +1 -1
- package/web/dist/assets/{c4Diagram-LMCZKHZV-9ubX8uGA.js → c4Diagram-LMCZKHZV-HKLlX5cR.js} +1 -1
- package/web/dist/assets/channel-DRy7FvyF.js +1 -0
- package/web/dist/assets/{chunk-2Q5K7J3B-DNDnjbP6.js → chunk-2Q5K7J3B-kq0TyLSB.js} +1 -1
- package/web/dist/assets/{chunk-32BRIVSS-iilfiffr.js → chunk-32BRIVSS-O-LMarT5.js} +1 -1
- package/web/dist/assets/{chunk-5VM5RSS4-BakOMFmf.js → chunk-5VM5RSS4-Di4h0CAu.js} +1 -1
- package/web/dist/assets/{chunk-EX3LRPZG-BhluhGyZ.js → chunk-EX3LRPZG-C8rgqUOt.js} +1 -1
- package/web/dist/assets/{chunk-JWPE2WC7-B6GKLlNb.js → chunk-JWPE2WC7-BSH41q4T.js} +1 -1
- package/web/dist/assets/{chunk-MOJQB5TN-CXmt8msF.js → chunk-MOJQB5TN-BAFuQHAC.js} +1 -1
- package/web/dist/assets/{chunk-RYQCIY6F-Bu58-SDr.js → chunk-RYQCIY6F-DAg6JOs7.js} +1 -1
- package/web/dist/assets/{chunk-V7JOEXUC-AQdyoYHL.js → chunk-V7JOEXUC-DbVrT8BG.js} +1 -1
- package/web/dist/assets/{chunk-VR4S4FIN-DeM5iMsE.js → chunk-VR4S4FIN-C6f5_Grp.js} +1 -1
- package/web/dist/assets/{chunk-XXDRQBXY-DjGjajy1.js → chunk-XXDRQBXY-CqcCYpqA.js} +1 -1
- package/web/dist/assets/classDiagram-OUVF2IWQ-C35RhB8X.js +1 -0
- package/web/dist/assets/classDiagram-v2-EOCWNBFH-C35RhB8X.js +1 -0
- package/web/dist/assets/{cose-bilkent-JH36ORCC-BGi4_egJ.js → cose-bilkent-JH36ORCC-DJw04eFh.js} +1 -1
- package/web/dist/assets/{cynefin-VYW2F7L2-CcgV1ve4.js → cynefin-VYW2F7L2-CpjwdEIU.js} +1 -1
- package/web/dist/assets/{cynefinDiagram-TSTJHNR4-BRDEsbBG.js → cynefinDiagram-TSTJHNR4-RqEIWoT0.js} +1 -1
- package/web/dist/assets/{dagre-VKFMJZFB-OjuC8dJB.js → dagre-VKFMJZFB-C1eGQNK2.js} +1 -1
- package/web/dist/assets/{diagram-FQU43EPY-CGdROWYh.js → diagram-FQU43EPY-BODLQ7dz.js} +1 -1
- package/web/dist/assets/{diagram-G47NLZAW-B5J0EUfS.js → diagram-G47NLZAW-DlhmukMC.js} +1 -1
- package/web/dist/assets/{diagram-NH7WQ7WH-zmb4-cP2.js → diagram-NH7WQ7WH-Ba_jZoCN.js} +1 -1
- package/web/dist/assets/{diagram-OA4YK3LP-j514bgaH.js → diagram-OA4YK3LP-DnSiAJBG.js} +1 -1
- package/web/dist/assets/{diagram-WEI45ONY-h5G459mZ.js → diagram-WEI45ONY-B3KoQ7_W.js} +1 -1
- package/web/dist/assets/{ebnfDiagram-CCIWWBDH-GnMgbuFk.js → ebnfDiagram-CCIWWBDH-ChnFc5gf.js} +1 -1
- package/web/dist/assets/{erDiagram-Q63AITRT-BFgH3UQp.js → erDiagram-Q63AITRT-D2KkJXLZ.js} +1 -1
- package/web/dist/assets/{flowDiagram-23GEKE2U-BsbQ_VXV.js → flowDiagram-23GEKE2U-CmybZufj.js} +1 -1
- package/web/dist/assets/{ganttDiagram-NO4QXBWP-C_fjo2sf.js → ganttDiagram-NO4QXBWP-BzPurW_v.js} +1 -1
- package/web/dist/assets/{gitGraphDiagram-IHSO6WYX-BUoXrAI9.js → gitGraphDiagram-IHSO6WYX-DAbXl4gO.js} +1 -1
- package/web/dist/assets/{index-ONJimzcx.js → index-CRY94nFp.js} +6 -6
- package/web/dist/assets/index-DtL0lbis.css +1 -0
- package/web/dist/assets/{infoDiagram-FWYZ7A6U-CJiSANyk.js → infoDiagram-FWYZ7A6U-C6qGjNA1.js} +1 -1
- package/web/dist/assets/{ishikawaDiagram-FXEZZL3T-BKoQ-a2c.js → ishikawaDiagram-FXEZZL3T-D2d1tO-9.js} +1 -1
- package/web/dist/assets/{journeyDiagram-5HDEW3XC-Db6Crcd3.js → journeyDiagram-5HDEW3XC-fP13w1b7.js} +1 -1
- package/web/dist/assets/{kanban-definition-HUTT4EX6-B9GaB0UJ.js → kanban-definition-HUTT4EX6-BJfWAXZ0.js} +1 -1
- package/web/dist/assets/{linear-BXwRb8MN.js → linear-CltApkHf.js} +1 -1
- package/web/dist/assets/{mermaid.core-DwzXN6up.js → mermaid.core-B1Dwetk3.js} +4 -4
- package/web/dist/assets/{mindmap-definition-LN4V7U3C-DKC_C_OY.js → mindmap-definition-LN4V7U3C-CdRUD7LF.js} +1 -1
- package/web/dist/assets/{papaparse.min-Cm1Pr54l.js → papaparse.min-C1y3wBH1.js} +1 -1
- package/web/dist/assets/{pegDiagram-2B236MQR-IeawbZPt.js → pegDiagram-2B236MQR-CeQkqN6Q.js} +1 -1
- package/web/dist/assets/{pieDiagram-ENE6RG2P-BOdsYBt8.js → pieDiagram-ENE6RG2P-Dqgc87jA.js} +1 -1
- package/web/dist/assets/pilotswarm-DayYdi39.js +96 -0
- package/web/dist/assets/{quadrantDiagram-ABIIQ3AL-Cr5yoN7C.js → quadrantDiagram-ABIIQ3AL-CD7f-w6m.js} +1 -1
- package/web/dist/assets/{railroadDiagram-RFXS5EU6-E7wuFBuk.js → railroadDiagram-RFXS5EU6-CcsAijSC.js} +1 -1
- package/web/dist/assets/{requirementDiagram-TGXJPOKE-sZCKiuDs.js → requirementDiagram-TGXJPOKE-BkzF80pL.js} +1 -1
- package/web/dist/assets/{sankeyDiagram-HTMAVEWB-B_EWziUR.js → sankeyDiagram-HTMAVEWB-D9XOFw7Y.js} +1 -1
- package/web/dist/assets/{sequenceDiagram-DBY2YBRQ-D2mN7onX.js → sequenceDiagram-DBY2YBRQ-BFfaS_Sz.js} +1 -1
- package/web/dist/assets/{sizeCapture-X5ZJPWSS-CEL9Ly2T.js → sizeCapture-X5ZJPWSS-CDJV16tP.js} +1 -1
- package/web/dist/assets/{stateDiagram-2N3HPSRC-C7ejJoeN.js → stateDiagram-2N3HPSRC-C0E-MPXO.js} +1 -1
- package/web/dist/assets/stateDiagram-v2-6OUMAXLB-BMqXeMJu.js +1 -0
- package/web/dist/assets/{swimlanes-5IMT3BWC-Ck3pbFxk.js → swimlanes-5IMT3BWC-n5Vsv7n9.js} +2 -2
- package/web/dist/assets/swimlanesDiagram-G3AALYLV-CGl4gRnH.js +8 -0
- package/web/dist/assets/{timeline-definition-FHXFAJF6-K3H8Yuyr.js → timeline-definition-FHXFAJF6-DW2gV8-n.js} +1 -1
- package/web/dist/assets/{vennDiagram-L72KCM5P-C3NKjSv9.js → vennDiagram-L72KCM5P-D9dbDm08.js} +1 -1
- package/web/dist/assets/{wardleyDiagram-EHGQE667-CeeVuFiO.js → wardleyDiagram-EHGQE667-CIcG7fiC.js} +1 -1
- package/web/dist/assets/{xychartDiagram-FW5EYKEG-CF-vCvEq.js → xychartDiagram-FW5EYKEG-elEIFsc9.js} +1 -1
- package/web/dist/index.html +4 -4
- package/web/runtime.js +20 -1
- package/web/dist/assets/channel-BhHZnKdH.js +0 -1
- package/web/dist/assets/classDiagram-OUVF2IWQ-CM_bKBKz.js +0 -1
- package/web/dist/assets/classDiagram-v2-EOCWNBFH-CM_bKBKz.js +0 -1
- package/web/dist/assets/index-CnH1Yv_d.css +0 -1
- package/web/dist/assets/pilotswarm-kCQFVjJm.js +0 -99
- package/web/dist/assets/stateDiagram-v2-6OUMAXLB-UaVDt_gU.js +0 -1
- package/web/dist/assets/swimlanesDiagram-G3AALYLV-CqO_fF5t.js +0 -8
package/ui/core/src/state.js
CHANGED
|
@@ -73,11 +73,23 @@ export function normalizeStoredLayoutAdjustments(layoutAdjustments) {
|
|
|
73
73
|
const sessionPaneAdjust = Number(candidate.sessionPaneAdjust);
|
|
74
74
|
const portalSessionColumnAdjust = Number(candidate.portalSessionColumnAdjust);
|
|
75
75
|
const activityPaneAdjust = Number(candidate.activityPaneAdjust);
|
|
76
|
+
// Canvas is a column of its own now rather than a face the right column
|
|
77
|
+
// wears, so it needs its own remembered width. Same mechanism as the rest:
|
|
78
|
+
// a pixel delta from the computed base, persisted per user.
|
|
79
|
+
const canvasPaneAdjust = Number(candidate.canvasPaneAdjust);
|
|
80
|
+
const diagnosticsPaneAdjust = Number(candidate.diagnosticsPaneAdjust);
|
|
81
|
+
const diagnosticsSplitAdjust = Number(candidate.diagnosticsSplitAdjust);
|
|
76
82
|
return {
|
|
77
83
|
paneAdjust: Number.isFinite(paneAdjust) ? Math.trunc(paneAdjust) : 0,
|
|
78
84
|
sessionPaneAdjust: Number.isFinite(sessionPaneAdjust) ? Math.trunc(sessionPaneAdjust) : 0,
|
|
79
85
|
portalSessionColumnAdjust: Number.isFinite(portalSessionColumnAdjust) ? Math.trunc(portalSessionColumnAdjust) : 0,
|
|
80
86
|
activityPaneAdjust: Number.isFinite(activityPaneAdjust) ? Math.trunc(activityPaneAdjust) : 0,
|
|
87
|
+
canvasPaneAdjust: Number.isFinite(canvasPaneAdjust) ? Math.trunc(canvasPaneAdjust) : 0,
|
|
88
|
+
diagnosticsPaneAdjust: Number.isFinite(diagnosticsPaneAdjust) ? Math.trunc(diagnosticsPaneAdjust) : 0,
|
|
89
|
+
// The inspector/activity seam inside Diagnostics, in PIXELS from an
|
|
90
|
+
// even split. The old row-quantized TUI adjust made browser drags
|
|
91
|
+
// jump in ~20px notches.
|
|
92
|
+
diagnosticsSplitAdjust: Number.isFinite(diagnosticsSplitAdjust) ? Math.trunc(diagnosticsSplitAdjust) : 0,
|
|
81
93
|
};
|
|
82
94
|
}
|
|
83
95
|
|
|
@@ -128,13 +140,110 @@ export function normalizeStoredCollapsedSessionIds(value) {
|
|
|
128
140
|
return out;
|
|
129
141
|
}
|
|
130
142
|
|
|
143
|
+
/**
|
|
144
|
+
* Right-column mode: the inspector/activity split, or the session canvas.
|
|
145
|
+
* Anything unrecognized falls back to panes — a stored value from a newer
|
|
146
|
+
* build must not strand an older portal in a mode it cannot render.
|
|
147
|
+
*
|
|
148
|
+
* @deprecated Superseded by the independent `canvasOpen` / `diagnosticsOpen`
|
|
149
|
+
* booleans. Kept only to migrate a value written by an older build — see
|
|
150
|
+
* normalizeStoredDesktopPanes.
|
|
151
|
+
*/
|
|
152
|
+
export function normalizeStoredRightPaneMode(value) {
|
|
153
|
+
return value === "canvas" ? "canvas" : "panes";
|
|
154
|
+
}
|
|
155
|
+
|
|
156
|
+
/**
|
|
157
|
+
* Which of the two optional desktop columns are on screen.
|
|
158
|
+
*
|
|
159
|
+
* Canvas and Diagnostics used to be one enum (`rightPaneMode`), so the right
|
|
160
|
+
* column could only ever wear one face. They are independent now: either, both,
|
|
161
|
+
* or neither. Diagnostics is the old inspector/activity split, moved out of the
|
|
162
|
+
* chat pane and travelling as one unit.
|
|
163
|
+
*
|
|
164
|
+
* Both default to OFF. A pane that is off has no width and no resizer — it is
|
|
165
|
+
* absent, not collapsed to nothing.
|
|
166
|
+
*
|
|
167
|
+
* Migrating a stored `rightPaneMode`:
|
|
168
|
+
* "canvas" -> canvas on. That was a deliberate choice, so it is honored.
|
|
169
|
+
* "panes" -> both off. "panes" was the default value rather than a choice,
|
|
170
|
+
* and the new default is a clean two-column workspace.
|
|
171
|
+
*/
|
|
172
|
+
export function normalizeStoredDesktopPanes(value, legacyRightPaneMode) {
|
|
173
|
+
const candidate = value && typeof value === "object" ? value : null;
|
|
174
|
+
if (candidate && (typeof candidate.canvasOpen === "boolean" || typeof candidate.diagnosticsOpen === "boolean")) {
|
|
175
|
+
return {
|
|
176
|
+
canvasOpen: candidate.canvasOpen === true,
|
|
177
|
+
diagnosticsOpen: candidate.diagnosticsOpen === true,
|
|
178
|
+
// Zen: chat as a narrow rail, canvas as the workbench. Only
|
|
179
|
+
// meaningful with the canvas open.
|
|
180
|
+
zen: candidate.zen === true && candidate.canvasOpen === true,
|
|
181
|
+
};
|
|
182
|
+
}
|
|
183
|
+
return {
|
|
184
|
+
canvasOpen: legacyRightPaneMode === "canvas",
|
|
185
|
+
diagnosticsOpen: false,
|
|
186
|
+
zen: false,
|
|
187
|
+
};
|
|
188
|
+
}
|
|
189
|
+
|
|
190
|
+
/**
|
|
191
|
+
* The store key for one canvas surface. Slot 1 keeps the bare session id so
|
|
192
|
+
* every reader written before slots existed keeps working untouched; slots
|
|
193
|
+
* 2-5 append "#<slot>". Used for canvas.bySessionId AND canvas.prefs.
|
|
194
|
+
*/
|
|
195
|
+
export function canvasKey(sessionId, slot) {
|
|
196
|
+
const id = String(sessionId || "");
|
|
197
|
+
const n = Number(slot);
|
|
198
|
+
return Number.isInteger(n) && n >= 2 && n <= 5 ? `${id}#${n}` : id;
|
|
199
|
+
}
|
|
200
|
+
|
|
201
|
+
/** The inverse: `sessionId#3` -> { sessionId, slot: 3 }; bare id -> slot 1. */
|
|
202
|
+
export function parseCanvasKey(key) {
|
|
203
|
+
const m = /^(.*)#([2-5])$/.exec(String(key || ""));
|
|
204
|
+
return m ? { sessionId: m[1], slot: Number(m[2]) } : { sessionId: String(key || ""), slot: 1 };
|
|
205
|
+
}
|
|
206
|
+
|
|
207
|
+
/**
|
|
208
|
+
* Per-session canvas preferences: what this user has chosen and seen.
|
|
209
|
+
*
|
|
210
|
+
* `optedOut` — the user manually left canvas mode this session, so agent
|
|
211
|
+
* draws badge instead of flipping. `lastViewedRev` — the highest revision
|
|
212
|
+
* this user has had on screen; the yellow badge is latestRev > lastViewedRev.
|
|
213
|
+
* Persisted (like pinned ids) so the overnight case lights the badge on
|
|
214
|
+
* reopen with no extra query.
|
|
215
|
+
*/
|
|
216
|
+
export function normalizeStoredCanvasPrefs(value) {
|
|
217
|
+
if (!value || typeof value !== "object" || Array.isArray(value)) return {};
|
|
218
|
+
const out = {};
|
|
219
|
+
for (const [sessionId, entry] of Object.entries(value)) {
|
|
220
|
+
const id = String(sessionId || "").trim();
|
|
221
|
+
if (!id || !entry || typeof entry !== "object") continue;
|
|
222
|
+
const lastViewedRev = Number(entry.lastViewedRev);
|
|
223
|
+
const lastViewedDataRev = Number(entry.lastViewedDataRev);
|
|
224
|
+
const zenRailPx = Number(entry.zenRailPx);
|
|
225
|
+
out[id] = {
|
|
226
|
+
optedOut: entry.optedOut === true,
|
|
227
|
+
lastViewedRev: Number.isFinite(lastViewedRev) && lastViewedRev > 0 ? Math.floor(lastViewedRev) : 0,
|
|
228
|
+
lastViewedDataRev: Number.isFinite(lastViewedDataRev) && lastViewedDataRev > 0 ? Math.floor(lastViewedDataRev) : 0,
|
|
229
|
+
// Zen chat-rail width, remembered for THIS session only.
|
|
230
|
+
...(Number.isFinite(zenRailPx) && zenRailPx > 0 ? { zenRailPx: Math.floor(zenRailPx) } : {}),
|
|
231
|
+
};
|
|
232
|
+
}
|
|
233
|
+
return out;
|
|
234
|
+
}
|
|
235
|
+
|
|
131
236
|
export function normalizeStoredActiveSessionId(value) {
|
|
132
237
|
if (value == null) return null;
|
|
133
238
|
const id = String(value).trim();
|
|
134
239
|
return id ? id : null;
|
|
135
240
|
}
|
|
136
241
|
|
|
137
|
-
export function createInitialState({ mode = "local", branding = null, docs = null, themeId = null,
|
|
242
|
+
export function createInitialState({ mode = "local", branding = null, docs = null, themeId = null, sessionOwnerFilter = null, layoutAdjustments = null, pinnedSessionIds = null, collapsedSessionIds = null, activeSessionId = null, sessionOrder = null, rightPaneMode = null, desktopPanes: storedDesktopPanes = null, canvasPrefs = null } = {}) {
|
|
243
|
+
const desktopPanes = normalizeStoredDesktopPanes(
|
|
244
|
+
storedDesktopPanes,
|
|
245
|
+
normalizeStoredRightPaneMode(rightPaneMode),
|
|
246
|
+
);
|
|
138
247
|
const hasStoredSessionOwnerFilter = sessionOwnerFilter != null;
|
|
139
248
|
const hasStoredCollapsedSessionIds = collapsedSessionIds != null;
|
|
140
249
|
const initialLayoutAdjustments = normalizeStoredLayoutAdjustments(layoutAdjustments);
|
|
@@ -164,7 +273,23 @@ export function createInitialState({ mode = "local", branding = null, docs = nul
|
|
|
164
273
|
sequenceSelectedTurn: null,
|
|
165
274
|
// "rich" was retired as a view mode; a persisted "rich" falls
|
|
166
275
|
// through to the transcript.
|
|
167
|
-
|
|
276
|
+
// Which face the right column wears: the inspector/activity panes
|
|
277
|
+
// or the session canvas. Persisted.
|
|
278
|
+
//
|
|
279
|
+
// @deprecated Read by nothing that decides layout any more — the
|
|
280
|
+
// two booleans below do that. Still derived so a build that rolls
|
|
281
|
+
// back, and anything still reading the old key, sees a sane value.
|
|
282
|
+
rightPaneMode: desktopPanes.canvasOpen ? "canvas" : "panes",
|
|
283
|
+
// The two optional desktop columns, independent of each other.
|
|
284
|
+
// Both off is the default workspace: sessions and chat only.
|
|
285
|
+
canvasOpen: desktopPanes.canvasOpen,
|
|
286
|
+
diagnosticsOpen: desktopPanes.diagnosticsOpen,
|
|
287
|
+
// Chat-rail + canvas-workbench mode. Persisted with the columns.
|
|
288
|
+
canvasZen: desktopPanes.zen,
|
|
289
|
+
// Canvas filling the workspace. Deliberately NOT persisted: it is
|
|
290
|
+
// a "look at this now" gesture, and returning to a portal with no
|
|
291
|
+
// chat and no session list would read as a broken app.
|
|
292
|
+
canvasMaximized: false,
|
|
168
293
|
statsViewMode: "session",
|
|
169
294
|
prompt: "",
|
|
170
295
|
promptCursor: 0,
|
|
@@ -301,6 +426,18 @@ export function createInitialState({ mode = "local", branding = null, docs = nul
|
|
|
301
426
|
query: "",
|
|
302
427
|
},
|
|
303
428
|
},
|
|
429
|
+
canvas: {
|
|
430
|
+
// Runtime knowledge of each session's canvas, fed by the
|
|
431
|
+
// selection-burst snapshot and then by canvas_updated events.
|
|
432
|
+
// { latestRev, note, sizeBytes, snapshotLoaded } per session.
|
|
433
|
+
bySessionId: {},
|
|
434
|
+
// Persisted per-user attention state — see normalizeStoredCanvasPrefs.
|
|
435
|
+
prefs: normalizeStoredCanvasPrefs(canvasPrefs),
|
|
436
|
+
// Ticks on every agent-driven flip. Hosts whose pane state lives
|
|
437
|
+
// outside ui.rightPaneMode (the phone's tab strip) watch this to
|
|
438
|
+
// bring their canvas surface forward.
|
|
439
|
+
flipSeq: 0,
|
|
440
|
+
},
|
|
304
441
|
logs: {
|
|
305
442
|
available: false,
|
|
306
443
|
availabilityReason: "Log tailing disabled: no K8S_CONTEXT configured in the env file.",
|
|
@@ -61,7 +61,7 @@ const THEMES = Object.freeze([
|
|
|
61
61
|
|
|
62
62
|
const THEME_MAP = new Map(THEMES.map((theme) => [theme.id, theme]));
|
|
63
63
|
|
|
64
|
-
export const DEFAULT_THEME_ID =
|
|
64
|
+
export const DEFAULT_THEME_ID = workspaceDarkTheme.id;
|
|
65
65
|
|
|
66
66
|
export { THEME_GROUP_ORDER } from "./helpers.js";
|
|
67
67
|
|
|
@@ -353,7 +353,6 @@ const ChatPane = React.memo(function ChatPane({ controller, width, height, frame
|
|
|
353
353
|
branding: state.branding,
|
|
354
354
|
connectionError: state.connection.error,
|
|
355
355
|
connectionMode: state.connection.mode,
|
|
356
|
-
chatViewMode: state.ui.chatViewMode || "transcript",
|
|
357
356
|
chatScroll: state.ui.scroll.chat,
|
|
358
357
|
focused: state.ui.focusRegion === "chat",
|
|
359
358
|
};
|
|
@@ -371,9 +370,7 @@ const ChatPane = React.memo(function ChatPane({ controller, width, height, frame
|
|
|
371
370
|
error: chatView.connectionError,
|
|
372
371
|
mode: chatView.connectionMode,
|
|
373
372
|
},
|
|
374
|
-
ui: {
|
|
375
|
-
chatViewMode: chatView.chatViewMode,
|
|
376
|
-
},
|
|
373
|
+
ui: {},
|
|
377
374
|
sessions: {
|
|
378
375
|
activeSessionId: chatView.activeSessionId,
|
|
379
376
|
byId: buildSingleSessionMap(chatView.activeSessionId, chatView.activeSession),
|
|
@@ -398,7 +395,6 @@ const ChatPane = React.memo(function ChatPane({ controller, width, height, frame
|
|
|
398
395
|
chatView.activeOutbox,
|
|
399
396
|
chatView.authPrincipal,
|
|
400
397
|
chatView.branding,
|
|
401
|
-
chatView.chatViewMode,
|
|
402
398
|
chatView.connectionError,
|
|
403
399
|
chatView.connectionMode,
|
|
404
400
|
]);
|
|
@@ -966,7 +962,6 @@ const StatusBar = React.memo(function StatusBar({ controller }) {
|
|
|
966
962
|
workersOnline: state.connection.workersOnline,
|
|
967
963
|
focusRegion: state.ui.focusRegion,
|
|
968
964
|
inspectorTab: state.ui.inspectorTab,
|
|
969
|
-
chatViewMode: state.ui.chatViewMode || "transcript",
|
|
970
965
|
fullscreenPane: state.ui.fullscreenPane || null,
|
|
971
966
|
logsAvailable: state.logs.available,
|
|
972
967
|
logsTailing: state.logs.tailing,
|
|
@@ -988,7 +983,6 @@ const StatusBar = React.memo(function StatusBar({ controller }) {
|
|
|
988
983
|
ui: {
|
|
989
984
|
focusRegion: statusState.focusRegion,
|
|
990
985
|
inspectorTab: statusState.inspectorTab,
|
|
991
|
-
chatViewMode: statusState.chatViewMode,
|
|
992
986
|
fullscreenPane: statusState.fullscreenPane,
|
|
993
987
|
statusText: statusState.statusText,
|
|
994
988
|
modal: statusState.modal,
|