groove-dev 0.27.189 → 0.27.190

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-DTY0KsH9.js"></script>
9
+ <script type="module" crossorigin src="/assets/index-DXup-n8w.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.189",
3
+ "version": "0.27.190",
4
4
  "description": "GROOVE GUI — visual agent control plane",
5
5
  "license": "FSL-1.1-Apache-2.0",
6
6
  "type": "module",
@@ -1,7 +1,7 @@
1
1
  // GROOVE GUI v2 — App Root
2
2
  // FSL-1.1-Apache-2.0 — see LICENSE
3
3
 
4
- import React, { useEffect, useMemo, useState, useRef } from 'react';
4
+ import React, { useEffect, useMemo, useState } from 'react';
5
5
  import { useGrooveStore } from './stores/groove';
6
6
  import { AppShell } from './components/layout/app-shell';
7
7
  import { SetupWizard } from './components/onboarding/setup-wizard';
@@ -136,27 +136,17 @@ function LoadingScreen() {
136
136
  const connected = useGrooveStore((s) => s.connected);
137
137
  const [slow, setSlow] = useState(false);
138
138
  const [reconnecting, setReconnecting] = useState(false);
139
- const triedRef = useRef(false);
140
139
 
141
- // If we haven't come up within a few seconds, the connection (or the SSH
142
- // tunnel behind it) is likely stalled surface a reload rather than an
143
- // endless pulse the user can't act on.
140
+ // Reveal a manual reconnect after a while rather than pulsing forever. We do
141
+ // NOT auto-reconnect here: over a slow SSH tunnel the socket can take longer
142
+ // than this to open, and reloading mid-connect would restart the load in a
143
+ // loop that never finishes. Wake recovery is handled by the desktop shell's
144
+ // power-resume handler; this is just a user-triggered escape hatch.
144
145
  useEffect(() => {
145
- const t = setTimeout(() => setSlow(true), 6000);
146
+ const t = setTimeout(() => setSlow(true), 12000);
146
147
  return () => clearTimeout(t);
147
148
  }, []);
148
149
 
149
- // If the socket can't even open (not just un-hydrated), the tunnel behind it
150
- // is probably dead — ask the desktop shell to re-establish it. Once only, and
151
- // only when disconnected, so a merely-slow load isn't disturbed.
152
- useEffect(() => {
153
- if (!slow || connected || triedRef.current) return;
154
- if (!window.groove?.reconnect) return;
155
- triedRef.current = true;
156
- setReconnecting(true);
157
- window.groove.reconnect().catch(() => {}).finally(() => setReconnecting(false));
158
- }, [slow, connected]);
159
-
160
150
  async function manualReconnect() {
161
151
  if (window.groove?.reconnect) {
162
152
  setReconnecting(true);
@@ -776,8 +776,9 @@ export const useGrooveStore = create((set, get) => ({
776
776
  }
777
777
 
778
778
  case 'auth:expired':
779
+ // Marketplace/subscription token lapsed — reset to the community state
780
+ // silently. There is no sign-in flow to nag the user toward.
779
781
  set({ marketplaceAuthenticated: false, marketplaceUser: null });
780
- get().addToast('warning', 'Session expired', 'Please sign in again');
781
782
  break;
782
783
 
783
784
  case 'network:node:status': {