You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Update READMEs for raw log files, per-task tabs, and stale task cleanup
Project README:
- Document both .log and .raw.log output files with version info
- Add command= to success/failure output examples
- Add command and server_id to database schema table
- Clarify cleanup is per-task (not per-file)
Plugin README:
- Describe per-task closeable output tabs instead of single Output tab
- Document click-to-reopen, stale task detection, optimistic cancel
- Document OutputStreamer raw log preference with .log fallback
- Add OpenSettingsAction to project structure
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Copy file name to clipboardExpand all lines: README.md
+12-4Lines changed: 12 additions & 4 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -348,7 +348,9 @@ The queue state is stored in SQLite at `/tmp/agent-task-queue/queue.db`:
348
348
|`id`| INTEGER | Auto-incrementing primary key |
349
349
|`queue_name`| TEXT | Queue identifier (e.g., "global", "android") |
350
350
|`status`| TEXT | Task state: "waiting" or "running" |
351
+
|`command`| TEXT | Shell command being executed |
351
352
|`pid`| INTEGER | MCP server process ID (for liveness check) |
353
+
|`server_id`| TEXT | Server instance UUID (for orphan detection across PID reuse) |
352
354
|`child_pid`| INTEGER | Subprocess ID (for orphan cleanup) |
353
355
|`created_at`| TIMESTAMP | When task was queued |
354
356
|`updated_at`| TIMESTAMP | Last status change |
@@ -387,23 +389,29 @@ To reduce token usage, full command output is written to files instead of return
387
389
388
390
```
389
391
/tmp/agent-task-queue/output/
390
-
├── task_1.log
392
+
├── task_1.log # Formatted log with metadata and section markers
393
+
├── task_1.raw.log # Raw stdout+stderr only (for plugin streaming)
391
394
├── task_2.log
395
+
├── task_2.raw.log
392
396
└── ...
393
397
```
394
398
399
+
Each task produces two output files:
400
+
-**`task_<id>.log`** — Formatted log with headers (`COMMAND:`, `WORKING DIR:`), section markers (`--- STDOUT ---`, `--- STDERR ---`, `--- SUMMARY ---`), and exit code. Used by the IntelliJ plugin notifier and the "View Output" action.
401
+
-**`task_<id>.raw.log`** — Raw stdout+stderr only, no metadata. Used by the IntelliJ plugin for clean streaming output in tabs. Added in MCP server v0.4.0.
Copy file name to clipboardExpand all lines: intellij-plugin/README.md
+11-7Lines changed: 11 additions & 7 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -19,10 +19,8 @@ Click the widget to open the tool window. Configure the display mode in **Settin
19
19
20
20
### Tool Window
21
21
22
-
Two tabs:
23
-
24
-
-**Queue** — Table of all tasks with ID, status, queue name, command, and relative time. Toolbar actions for refresh, cancel, clear, and view output.
25
-
-**Output** — Live streaming console view of the currently running task's output. Automatically switches when a new task starts running.
22
+
-**Queue** tab — Table of all tasks with ID, status, queue name, command, and relative time. Toolbar actions for refresh, cancel, clear, view output, and settings. Click a running task row to open its output tab.
23
+
-**Output** tabs — Per-task closeable tabs with live streaming console output. Automatically opened when a task starts running. Tabs can be closed and reopened by clicking the running task in the queue table.
26
24
27
25
### Notifications
28
26
@@ -34,7 +32,7 @@ Balloon notifications for queue events (can be disabled in settings):
- Only active while a task is running (no coroutine exists otherwise)
63
62
- 50ms interval when new data was just read (active streaming)
64
63
- 200ms interval when no new data (waiting for output)
65
64
- Uses `RandomAccessFile` with byte offset tracking to read only new content
65
+
- Prefers `task_<id>.raw.log` (MCP server v0.4.0+) for clean output with no filtering
66
+
- Falls back to `task_<id>.log` with header skipping and marker filtering for MCP server v0.3.x and earlier
66
67
67
68
We chose polling over `java.nio.file.WatchService` because WatchService on macOS falls back to internal polling at 2-10s intervals (no native kqueue support for file modifications in Java), which would actually be slower.
68
69
@@ -87,6 +88,8 @@ All UI components subscribe to `TaskQueueModel.TOPIC` on the IntelliJ message bu
87
88
88
89
Task cancellation sends SIGTERM to the process group (negative PID), waits 500ms, then sends SIGKILL if still alive. The Python task runner uses `start_new_session=True` when spawning subprocesses, which creates a dedicated process group — this ensures `kill -TERM -<pgid>` cleanly terminates the entire process tree.
89
90
91
+
The UI is updated optimistically — the task is removed from the model immediately so the table responds instantly, before the background process kill and DB cleanup complete. The poller reconciles with the DB on subsequent polls.
92
+
90
93
## Database Schema
91
94
92
95
The plugin reads from the `queue` table:
@@ -102,7 +105,7 @@ The plugin reads from the `queue` table:
102
105
|`created_at`| TIMESTAMP | When task was queued |
103
106
|`updated_at`| TIMESTAMP | Last status change |
104
107
105
-
Output logs are at `<data_dir>/output/task_<id>.log`.
108
+
Output logs are at `<data_dir>/output/task_<id>.log` (formatted) and `<data_dir>/output/task_<id>.raw.log` (raw output, MCP server v0.4.0+).
0 commit comments