v0.4.3 — queued results deliver themselves
Finished tasks used to wait in the inbox until you remembered to type /queue-resume. Now they come to you.
Results deliver themselves
Two hooks hand a finished task back into the chat, both filtered to the project it was queued for:
SessionStart— open or resume a chat on that project and the result is already there.UserPromptSubmit— chat already open, so it arrives with your next message.
/queue-resume is unchanged and still works on demand. All three go through one shared claim, so the automatic paths can never show less than the manual command.
The automatic path used to be the lossy one
Injection already existed, but it read last-output.md, a single file every completion overwrote. Two tasks finishing in one window meant only the last was shown; a result for project A followed by one for project B meant A's was filtered out of A's chat and then gone. That file is retired. Everything now flows through the per-task, per-project inbox that /queue-resume already used.
Two defects caught in review, before either shipped
A task would have eaten its own project's pending results. Every queued task runs as claude --print inside its project directory, which is a new session, so both delivery hooks fire there. Claiming is destructive, so each task run would have silently consumed every pending result for that project into a session nobody reads. The hook docs say print mode does not fire these hooks. A canary planted in the inbox proved otherwise. Both runners now set QUEUE_TASK_RUN=1 and both hooks refuse to deliver when they see it.
Answers containing a markdown rule were truncated. Blocks were separated by \n---\n and split on that same string, so any answer with a --- line broke in two. You saw only the text before the rule; the tail matched no project and sat in the inbox forever. Blocks now split on where a record starts, which no answer body can fake. This one predates the release and affected /queue-resume too.
Also in this release
- The claim can no longer lose what it takes: the working file is per-process and is restored on failure instead of deleted, and a completion landing mid-claim is merged rather than overwritten.
nudge-session.shputs a one-click pickup in the chat you queued from, via the desktop app'spromptSuggestion. It reads an undocumented app-internal store, so every step is fail-open and a failure can never affect a task.⚠️ BUDGET OVERno longer appears at 28% utilization. A closing window is now reported as a clock issue, not a budget one, and four further defects found reviewing that fix are included.
385 tests, up from 264.
Upgrading
Run ./install.sh. It links three new scripts and registers the SessionStart hook. No data formats changed and existing queued tasks keep working.