POST /api/workers/:id/command inserts the execution row before checking whether the worker WebSocket is connected. When the worker is offline the route returns 400 Worker not connected, but the row stays in running forever (until the next server restart marks it failed). Meanwhile the UI discards the server message and shows only "Failed to execute command".
The Quick Command worker dropdown also lists offline workers as selectable, so this is easy to trigger.
Where
server.jsapp.post('/api/workers/:id/command') – INSERT precedes the workers.get(workerId) check.
public/index.htmlexecuteQuickCommand() – ignores err.error from the response.
loadWorkers() – <option> for offline workers is not disabled.
Suggested fix
Check connectivity first (or delete/mark the row failed on the 400 path).
Surface the server's error text in the UI.
Disable/grey offline workers in the dropdown and default-select the first online one.
## Overview
`POST /api/workers/:id/command` inserts the execution row **before** checking whether the worker WebSocket is connected. When the worker is offline the route returns `400 Worker not connected`, but the row stays in `running` forever (until the next server restart marks it failed). Meanwhile the UI discards the server message and shows only "Failed to execute command".
The Quick Command worker dropdown also lists offline workers as selectable, so this is easy to trigger.
## Where
- `server.js` `app.post('/api/workers/:id/command')` – INSERT precedes the `workers.get(workerId)` check.
- `public/index.html` `executeQuickCommand()` – ignores `err.error` from the response.
- `loadWorkers()` – `<option>` for offline workers is not disabled.
## Suggested fix
- Check connectivity first (or delete/mark the row failed on the 400 path).
- Surface the server's error text in the UI.
- Disable/grey offline workers in the dropdown and default-select the first online one.
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
Overview
POST /api/workers/:id/commandinserts the execution row before checking whether the worker WebSocket is connected. When the worker is offline the route returns400 Worker not connected, but the row stays inrunningforever (until the next server restart marks it failed). Meanwhile the UI discards the server message and shows only "Failed to execute command".The Quick Command worker dropdown also lists offline workers as selectable, so this is easy to trigger.
Where
server.jsapp.post('/api/workers/:id/command')– INSERT precedes theworkers.get(workerId)check.public/index.htmlexecuteQuickCommand()– ignoreserr.errorfrom the response.loadWorkers()–<option>for offline workers is not disabled.Suggested fix