diff --git a/CHANGELOG.md b/CHANGELOG.md index 34198fa0f..6593bae75 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -44,7 +44,7 @@ - Skills: add tmux skill + interactive coding guidance in coding-agent. - Gateway: document port configuration + multi-instance isolation. - Onboarding/Config: add protocol notes for wizard + schema RPC. -- Queue: clarify steer-backlog behavior and update examples for streaming surfaces. +- Queue: clarify steer-backlog behavior with inline commands and update examples for streaming surfaces. ## 2.0.0-beta5 — 2026-01-03 diff --git a/docs/queue.md b/docs/queue.md index 518db7de4..aafda0ceb 100644 --- a/docs/queue.md +++ b/docs/queue.md @@ -30,6 +30,7 @@ Inbound messages can steer the current run, wait for a followup turn, or do both Steer-backlog means you can get a followup response after the steered run, so streaming surfaces can look like duplicates. Prefer `collect`/`steer` if you want one response per inbound message. +Inline fix: `/queue collect` (per-session) or set `routing.queue.bySurface.discord: "collect"`. Defaults (when unset in config): - All surfaces → `collect` diff --git a/src/agents/pi-embedded-subscribe.ts b/src/agents/pi-embedded-subscribe.ts index e1b76efca..268d5c9d1 100644 --- a/src/agents/pi-embedded-subscribe.ts +++ b/src/agents/pi-embedded-subscribe.ts @@ -259,6 +259,7 @@ export function subscribeEmbeddedPiSession(params: { if (!blockChunking) return; const minChars = Math.max(1, Math.floor(blockChunking.minChars)); const maxChars = Math.max(minChars, Math.floor(blockChunking.maxChars)); + // Force flush small remainders as a single chunk to avoid re-splitting. if (force && blockBuffer.length > 0 && blockBuffer.length <= maxChars) { emitBlockChunk(blockBuffer); blockBuffer = ""; @@ -457,6 +458,7 @@ export function subscribeEmbeddedPiSession(params: { if (delta) { chunk = delta; } else if (content) { + // Providers may resend full content on text_end; append only the suffix. if (content.startsWith(deltaBuffer)) { chunk = content.slice(deltaBuffer.length); } else if (deltaBuffer.startsWith(content)) {