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
Automation prompt actions can set a per-action thinking level — automations.json prompt actions now accept thinkingLevel, matching the existing per-action llmConnection and model overrides. The value is validated in the shared schema, propagated through pending prompts and the "Run test" RPC path, and passed to spawned automation sessions with the same workspace-default fallback semantics as manual sessions. Persisted legacy "think" values are migrated instead of breaking config parsing. (3f8a7d13)
Automation action rows now show model-selection badges — The Automation Info page surfaces configured connection, model, and thinking-level overrides as compact badges under each prompt action, so users can audit which automation will run on which model without opening automations.json. (78d08edd)
Improvements
Queued mid-stream messages are visibly acknowledged without glowing bubbles — When a user sends while an agent is already responding, the optimistic user bubble now keeps an inline pulsing Queued indicator for at least 2.5 seconds, including Pi/DeepSeek/OpenAI-compatible sessions whose backend acknowledgement arrives almost immediately. Pending user bubbles no longer use the global shimmer overlay; the queued chip is the only transient visual state. The final implementation keeps the optimistic React key stable so the timer is not reset by the server's canonical message id. Fixes #616. (eb81086e, 0d9ca6b5, 083e6f90, 67353f42, fee4c2d1)
OpenAI-compatible tool-call failures now produce actionable diagnostics — The unified network interceptor validates outgoing Chat Completions and Responses API bodies before they hit the provider, enriches opaque empty-body 400 responses with sanitized request summaries, and reports malformed histories with structured error details instead of leaving sessions stuck on provider-specific messages. Partially addresses #612. (ab3c8eac)
Interceptor development now uses live source in monorepo runs — Non-packaged Pi subprocesses preload packages/shared/src/unified-network-interceptor.ts directly instead of a stale built bundle, so interceptor changes take effect after a subprocess restart during development. A new CRAFT_DEBUG_SSE_RAW=1 toggle can dump raw OpenAI-compatible SSE lines to interceptor.log when diagnosing relay behavior. (13d13635)
Bug Fixes
DeepSeek and OpenAI-compatible tool calls no longer corrupt replay history with duplicate or missing ids — Streaming reassembly now deduplicates relays that repeat tool_call.id, handles providers that omit tc.index on argument deltas, and consolidates DeepSeek's two-phase id/name + shifted-args stream into one logical tool-call event per call. Responses API replay now synthesizes deterministic missing call_id values and drops orphan outputs. Already-poisoned histories are sanitized on replay by removing empty-id tool calls and orphan tool results, so affected sessions can recover without manual JSONL edits. Fixes #613, #621, and #602. (ab3c8eac, 13d13635)
Queued messages stay in chat during silent redirects — The renderer now distinguishes explicit user stops from silent backend redirects: queued bubbles are only restored to the input on an intentional stop, while background redirects leave the bubble in chat for backend replay. sendMessage now acknowledges persistence with { accepted, messageId }, queued replay failures emit a typed retryable error, and queue boundary logs make support triage easier. Fixes #616. (eb81086e)
Pi/Codex mini-completions avoid unsupported codex-mini variants under ChatGPT-account auth — Title generation, summarization, and mini completions now filter the whole codex-mini family at selection time for openai-codex ChatGPT-account connections, preventing the "not supported when using Codex with a ChatGPT account" failure before a query is attempted. (95618531)
Pi built-in tools accept Craft UI metadata safely — Strict Pi tool schemas now allow Craft's root-level _displayName and _intent fields at the adapter boundary, then strip them before invoking the upstream tool implementation. This preserves the richer tool-call UI metadata without tripping schema validation on built-in tools. (16d103d2)
Attachments clear after sending — The composer now clears staged attachments after a message is sent instead of leaving previously attached files ready to resend accidentally. (70f9a80a)