groove-dev 0.19.0 → 0.19.1
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/CHANGELOG.md +5 -0
- package/node_modules/@groove-dev/cli/bin/groove.js +1 -1
- package/node_modules/@groove-dev/gui/.groove/codebase-index.json +1 -1
- package/node_modules/@groove-dev/gui/.groove/daemon.pid +1 -1
- package/node_modules/@groove-dev/gui/.groove/timeline.json +56 -0
- package/node_modules/@groove-dev/gui/AGENTS_REGISTRY.md +1 -1
- package/node_modules/@groove-dev/gui/dist/assets/{index-BjC5-pVh.js → index-fKeZMGM_.js} +5 -5
- package/node_modules/@groove-dev/gui/dist/index.html +1 -1
- package/node_modules/@groove-dev/gui/src/app.jsx +12 -0
- package/node_modules/@groove-dev/gui/src/components/ui/toast.jsx +2 -2
- package/node_modules/@groove-dev/gui/src/stores/groove.js +3 -2
- package/package.json +1 -1
- package/packages/cli/bin/groove.js +1 -1
- package/packages/gui/dist/assets/{index-BjC5-pVh.js → index-fKeZMGM_.js} +5 -5
- package/packages/gui/dist/index.html +1 -1
- package/packages/gui/src/app.jsx +12 -0
- package/packages/gui/src/components/ui/toast.jsx +2 -2
- package/packages/gui/src/stores/groove.js +3 -2
|
@@ -5,7 +5,7 @@
|
|
|
5
5
|
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
|
6
6
|
<link rel="icon" type="image/png" href="/favicon.png" />
|
|
7
7
|
<title>Groove GUI</title>
|
|
8
|
-
<script type="module" crossorigin src="/assets/index-
|
|
8
|
+
<script type="module" crossorigin src="/assets/index-fKeZMGM_.js"></script>
|
|
9
9
|
<link rel="modulepreload" crossorigin href="/assets/vendor-C0HXlhrU.js">
|
|
10
10
|
<link rel="modulepreload" crossorigin href="/assets/reactflow-BQPfi37R.js">
|
|
11
11
|
<link rel="modulepreload" crossorigin href="/assets/codemirror-BBL3i_JW.js">
|
|
@@ -83,10 +83,22 @@ function ViewRouter() {
|
|
|
83
83
|
);
|
|
84
84
|
}
|
|
85
85
|
|
|
86
|
+
function LoadingScreen() {
|
|
87
|
+
return (
|
|
88
|
+
<div className="h-screen bg-surface-0 flex flex-col items-center justify-center gap-4">
|
|
89
|
+
<img src="/favicon.png" alt="" className="w-10 h-10 opacity-60 animate-pulse" />
|
|
90
|
+
<p className="text-sm text-text-3 font-sans">Connecting...</p>
|
|
91
|
+
</div>
|
|
92
|
+
);
|
|
93
|
+
}
|
|
94
|
+
|
|
86
95
|
export default function App() {
|
|
87
96
|
const connect = useGrooveStore((s) => s.connect);
|
|
97
|
+
const hydrated = useGrooveStore((s) => s.hydrated);
|
|
88
98
|
useEffect(() => { connect(); }, [connect]);
|
|
89
99
|
|
|
100
|
+
if (!hydrated) return <LoadingScreen />;
|
|
101
|
+
|
|
90
102
|
return (
|
|
91
103
|
<ErrorBoundary>
|
|
92
104
|
<ViewRouter />
|
|
@@ -53,11 +53,11 @@ function ToastItem({ toast }) {
|
|
|
53
53
|
transition={{ duration: 0.2 }}
|
|
54
54
|
className={cn(
|
|
55
55
|
'w-80 rounded-md border border-border bg-surface-1 shadow-xl',
|
|
56
|
-
'border-l-4 flex items-
|
|
56
|
+
'border-l-4 flex items-center gap-3 px-4 py-3',
|
|
57
57
|
BORDER_COLORS[toast.type],
|
|
58
58
|
)}
|
|
59
59
|
>
|
|
60
|
-
<Icon size={16} className={cn('
|
|
60
|
+
<Icon size={16} className={cn('flex-shrink-0', ICON_COLORS[toast.type])} />
|
|
61
61
|
<div className="flex-1 min-w-0">
|
|
62
62
|
<p className="text-sm text-text-0 font-sans">{toast.message}</p>
|
|
63
63
|
{toast.detail && (
|
|
@@ -21,6 +21,7 @@ export const useGrooveStore = create((set, get) => ({
|
|
|
21
21
|
// ── Connection ────────────────────────────────────────────
|
|
22
22
|
agents: [],
|
|
23
23
|
connected: false,
|
|
24
|
+
hydrated: false, // true after first WS state message — gates the UI to prevent flicker
|
|
24
25
|
ws: null,
|
|
25
26
|
daemonHost: null,
|
|
26
27
|
tunneled: false,
|
|
@@ -108,7 +109,7 @@ export const useGrooveStore = create((set, get) => ({
|
|
|
108
109
|
if (arr.length > 200) timeline[agent.id] = arr.slice(-200);
|
|
109
110
|
}
|
|
110
111
|
}
|
|
111
|
-
set({ agents: msg.data, tokenTimeline: timeline });
|
|
112
|
+
set({ agents: msg.data, tokenTimeline: timeline, hydrated: true });
|
|
112
113
|
break;
|
|
113
114
|
}
|
|
114
115
|
|
|
@@ -228,7 +229,7 @@ export const useGrooveStore = create((set, get) => ({
|
|
|
228
229
|
};
|
|
229
230
|
|
|
230
231
|
ws.onclose = () => {
|
|
231
|
-
set({ connected: false, ws: null, daemonHost: null, tunneled: false });
|
|
232
|
+
set({ connected: false, hydrated: false, ws: null, daemonHost: null, tunneled: false });
|
|
232
233
|
setTimeout(() => get().connect(), 2000);
|
|
233
234
|
};
|
|
234
235
|
ws.onerror = () => ws.close();
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "groove-dev",
|
|
3
|
-
"version": "0.19.
|
|
3
|
+
"version": "0.19.1",
|
|
4
4
|
"description": "Open-source agent orchestration layer — the AI company OS. MCP integrations (Slack, Gmail, Stripe, 15+), agent scheduling (cron), business roles (CMO, CFO, EA). GUI dashboard, multi-agent coordination, zero cold-start, infinite sessions. Works with Claude Code, Codex, Gemini CLI, Ollama.",
|
|
5
5
|
"license": "FSL-1.1-Apache-2.0",
|
|
6
6
|
"author": "Groove Dev <hello@groovedev.ai> (https://groovedev.ai)",
|