groove-dev 0.27.164 → 0.27.165

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.
@@ -6,7 +6,7 @@
6
6
  <meta name="viewport" content="width=device-width, initial-scale=1.0" />
7
7
  <link rel="icon" type="image/png" href="/favicon.png" />
8
8
  <title>Groove GUI</title>
9
- <script type="module" crossorigin src="/assets/index-CkCFf4Fl.js"></script>
9
+ <script type="module" crossorigin src="/assets/index-SZBexPhJ.js"></script>
10
10
  <link rel="modulepreload" crossorigin href="/assets/vendor-26L3JoZv.js">
11
11
  <link rel="modulepreload" crossorigin href="/assets/reactflow-DoBZjiHE.js">
12
12
  <link rel="modulepreload" crossorigin href="/assets/codemirror-BYKpdS2W.js">
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@groove-dev/gui",
3
- "version": "0.27.164",
3
+ "version": "0.27.165",
4
4
  "description": "GROOVE GUI — visual agent control plane",
5
5
  "license": "FSL-1.1-Apache-2.0",
6
6
  "type": "module",
@@ -93,6 +93,17 @@ function TerminalInstance({ tabId, visible, registerKill, onSelectionChange }) {
93
93
 
94
94
  if (msg.type === 'terminal:spawned' && msg.requestId === requestId && !termIdRef.current) {
95
95
  termIdRef.current = msg.id;
96
+ setTimeout(() => {
97
+ try { fitRef.current?.fit(); } catch {}
98
+ const c = term.cols, r = term.rows;
99
+ if (c > 1 && r > 1 && termIdRef.current) {
100
+ const w = useGrooveStore.getState().ws;
101
+ if (w?.readyState === WebSocket.OPEN) {
102
+ w.send(JSON.stringify({ type: 'terminal:resize', id: termIdRef.current, rows: r, cols: c }));
103
+ lastSizeRef.current = { cols: c, rows: r };
104
+ }
105
+ }
106
+ }, 50);
96
107
  } else if (msg.type === 'terminal:output' && msg.id === termIdRef.current) {
97
108
  term.write(msg.data);
98
109
  } else if (msg.type === 'terminal:exit' && msg.id === termIdRef.current) {
@@ -114,9 +125,9 @@ function TerminalInstance({ tabId, visible, registerKill, onSelectionChange }) {
114
125
  term.onResize(({ cols, rows }) => {
115
126
  if (cols === lastSizeRef.current.cols && rows === lastSizeRef.current.rows) return;
116
127
  if (cols < 2 || rows < 2) return;
117
- lastSizeRef.current = { cols, rows };
118
128
  const ws = useGrooveStore.getState().ws;
119
129
  if (ws?.readyState === WebSocket.OPEN && termIdRef.current) {
130
+ lastSizeRef.current = { cols, rows };
120
131
  ws.send(JSON.stringify({ type: 'terminal:resize', id: termIdRef.current, rows, cols }));
121
132
  }
122
133
  });
@@ -124,7 +135,10 @@ function TerminalInstance({ tabId, visible, registerKill, onSelectionChange }) {
124
135
 
125
136
  requestAnimationFrame(() => {
126
137
  try { fitAddon.fit(); } catch {}
127
- trySpawn();
138
+ requestAnimationFrame(() => {
139
+ try { fitAddon.fit(); } catch {}
140
+ trySpawn();
141
+ });
128
142
  });
129
143
 
130
144
  const observer = new ResizeObserver(() => {
@@ -149,6 +163,16 @@ function TerminalInstance({ tabId, visible, registerKill, onSelectionChange }) {
149
163
  if (visible && fitRef.current) {
150
164
  requestAnimationFrame(() => {
151
165
  try { fitRef.current.fit(); } catch {}
166
+ if (termRef.current && termIdRef.current) {
167
+ const c = termRef.current.cols, r = termRef.current.rows;
168
+ if (c > 1 && r > 1) {
169
+ const ws = useGrooveStore.getState().ws;
170
+ if (ws?.readyState === WebSocket.OPEN) {
171
+ ws.send(JSON.stringify({ type: 'terminal:resize', id: termIdRef.current, rows: r, cols: c }));
172
+ lastSizeRef.current = { cols: c, rows: r };
173
+ }
174
+ }
175
+ }
152
176
  });
153
177
  }
154
178
  }, [visible]);