flying-lobster 1.9.2 → 1.9.4
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/README.md +33 -0
- package/package.json +14 -1
- package/src/main/updater.js +19 -2
package/README.md
ADDED
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
# 🦞 Flying Lobster
|
|
2
|
+
|
|
3
|
+
**Always-on-top chat window for OpenClaw AI agents.**
|
|
4
|
+
|
|
5
|
+
A lightweight macOS desktop app that keeps your AI assistant one keystroke away. Floats above all windows, toggles with a global hotkey, and connects to any OpenClaw gateway.
|
|
6
|
+
|
|
7
|
+
## Features
|
|
8
|
+
|
|
9
|
+
- **Always-on-top** — Stays visible over fullscreen apps
|
|
10
|
+
- **Global hotkey** — Toggle with `⌘⇧Space` (customizable)
|
|
11
|
+
- **Switch agents instantly** — Add multiple gateways, swap between AI agents with one click
|
|
12
|
+
- **Dark/Light mode** — Syncs with your system or toggle manually
|
|
13
|
+
- **Minimal UI** — Just you and your AI, no clutter
|
|
14
|
+
|
|
15
|
+
## Install
|
|
16
|
+
|
|
17
|
+
```bash
|
|
18
|
+
npx flying-lobster install
|
|
19
|
+
```
|
|
20
|
+
|
|
21
|
+
Drag to Applications, done.
|
|
22
|
+
|
|
23
|
+
## Requirements
|
|
24
|
+
|
|
25
|
+
- macOS 12+
|
|
26
|
+
- An OpenClaw gateway URL (get one at [openclaw.ai](https://openclaw.ai))
|
|
27
|
+
|
|
28
|
+
## Usage
|
|
29
|
+
|
|
30
|
+
1. Launch Flying Lobster
|
|
31
|
+
2. Click the 🦞 tray icon → Add Gateway
|
|
32
|
+
3. Enter your gateway URL and name
|
|
33
|
+
4. Press `⌘⇧Space` to toggle the window
|
package/package.json
CHANGED
|
@@ -1,9 +1,22 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "flying-lobster",
|
|
3
|
-
"version": "1.9.
|
|
3
|
+
"version": "1.9.4",
|
|
4
4
|
"description": "Always-on-top chat window for OpenClaw gateways 🦞",
|
|
5
5
|
"author": "Rootlab.ai",
|
|
6
6
|
"license": "MIT",
|
|
7
|
+
"keywords": [
|
|
8
|
+
"openclaw",
|
|
9
|
+
"moltbot",
|
|
10
|
+
"clawdbot",
|
|
11
|
+
"ai-assistant",
|
|
12
|
+
"ai-agents",
|
|
13
|
+
"agent-switcher",
|
|
14
|
+
"always-on-top",
|
|
15
|
+
"chat",
|
|
16
|
+
"claude",
|
|
17
|
+
"llm",
|
|
18
|
+
"productivity"
|
|
19
|
+
],
|
|
7
20
|
"main": "src/main/index.js",
|
|
8
21
|
"bin": {
|
|
9
22
|
"flying-lobster": "./bin/cli.js"
|
package/src/main/updater.js
CHANGED
|
@@ -165,9 +165,13 @@ async function startUpdate() {
|
|
|
165
165
|
updateState.progress = 'Downloading latest version...';
|
|
166
166
|
notifyRenderer();
|
|
167
167
|
|
|
168
|
-
|
|
168
|
+
// Use full shell command to ensure npx is found
|
|
169
|
+
const command = 'npx flying-lobster@latest install';
|
|
170
|
+
console.log('[Updater] Running:', command);
|
|
171
|
+
|
|
172
|
+
const npxProcess = spawn(command, [], {
|
|
169
173
|
shell: true,
|
|
170
|
-
env: { ...process.env, FORCE_COLOR: '0' }
|
|
174
|
+
env: { ...process.env, FORCE_COLOR: '0', PATH: process.env.PATH + ':/usr/local/bin:/opt/homebrew/bin' }
|
|
171
175
|
});
|
|
172
176
|
|
|
173
177
|
let output = '';
|
|
@@ -194,6 +198,19 @@ async function startUpdate() {
|
|
|
194
198
|
const text = data.toString();
|
|
195
199
|
output += text;
|
|
196
200
|
console.log('[Updater stderr]', text);
|
|
201
|
+
// Show stderr as progress if it looks like status
|
|
202
|
+
if (text.includes('npm') || text.includes('npx')) {
|
|
203
|
+
updateState.progress = 'Downloading...';
|
|
204
|
+
notifyRenderer();
|
|
205
|
+
}
|
|
206
|
+
});
|
|
207
|
+
|
|
208
|
+
// Handle spawn error immediately
|
|
209
|
+
npxProcess.on('error', (err) => {
|
|
210
|
+
console.error('[Updater] Spawn error:', err);
|
|
211
|
+
updateState.updating = false;
|
|
212
|
+
updateState.error = 'Failed to start update: ' + err.message;
|
|
213
|
+
notifyRenderer();
|
|
197
214
|
});
|
|
198
215
|
|
|
199
216
|
await new Promise((resolve, reject) => {
|