Added — Agents pane "match the best of Claude Code & Codex" initiative
Driven by a 6-agent deep-dive on Claude Code, Codex, Cursor, Windsurf,
Aider, Cline, Continue.dev, Zed, Copilot Workspace, JetBrains Junie, and
Warp; followed by a 4-agent deep-dive on the OpenAI "Codex for (almost)
everything" April 16 release + GPT-5.5 + CLI 0.107→0.128 cuts.
Tier 1 — visible polish
- Drag-drop and clipboard-paste images in the launcher (5 MB cap, removable thumbnail chips); image blocks land in the SDK content array on send
SessionHealthBarin chat header: model · context % gauge · cumulative tokens · session $ · git branch- Mid-turn steering:
Tabqueues a follow-up;Alt+./Alt+,nudge the model toward thorough / fast within the same provider Shift+Tabcycles a single mode chip (default | plan | manual | yolo)- New slash commands
/usage,/history,/review,/goal,/template; saved prompt templates surface as native/<slug>commands - Header context badges: provider auth, linked Mission with click-to-jump, MCP
N/Mserver toggle dropdown, memory-context tooltip previewing the actual injected patterns - One-time onboarding overlay on first Agents-view visit
Tier 2 — killer features
- Persistent dockable
PlanPanelparsing Anthropic SDKTodoWriteand the markdowntask_listtool PendingApprovalsRollupwith "Apply / Reject / Cancel all" when 2+ pending writes or permissions stack up/reviewspawns a Reviewer subagent fed a unified diff of the parent conversation's pending writes — returns 🛑 Blockers /⚠️ Concerns / 💡 Nits- Durable agent profiles (Default / Scout / Reviewer built-ins, plus user-created);
AgentProfilesCardeditor inSettings → Agent Profiles - AGENTS.md / CLAUDE.md auto-injection from the project root
- Memories panel inline editor (edit text + category, Ctrl+Enter saves)
RunningAgentsChipin toolbar with live count of streaming agents, click-to-jump and stop
Tier 3 — sidecar protocol v3 → v4 + frontend
- Sidecar
PROTOCOL_VERSIONbumped 2 → 4 - New events:
plan_block(structured TodoWrite mirror),tool_output_extended(Bash exit code + stdout/stderr; Write/Edit modified paths),turn_summary(running tokens between turns) - New requests:
set_permission_mode,set_model,retry,cancel_pending_tools(drains parked permission/edit prompts as denied without killing the loop) StartSessionRequestgainsattachmentsandresume;EditResponseRequestgainsmergedContent(per-hunk acceptance honored sidecar AND every in-process provider)permission_requestgainsbatchId/batchSizefor grouped rollupsdonepayload gainsresumeToken; persisted on the conversation- Auto-failover heuristic on rate-limit (Opus → Sonnet → Haiku, o3 → gpt-5 → o4-mini, MiniMax → highspeed) with a one-retry-per-turn guard
- Worktree-per-conversation toggle in launcher (
.pkt-worktrees/<convId>on a freshpkt/<convId>branch)
Codex Spring 2026 absorption (A1–A5 + B1–B9)
- Codex
todo_listitems map to the existingplan_blockevent so PlanPanel works for Codex too reasoning_tokens+cached_input_tokensfromusageflow throughturn_summaryand roll intoaggregateConversationCost(was: under-reporting GPT-5.5 spend)- Codex MultiAgentV2 sub-agent attribution:
turn_summary.address(/root/agent_aetc.) routes child tokens into a per-address bucket on the conversation; CostDashboard rolls every bucket into the total - AGENTS.md cascading resolver in Rust core (
core::agents_md) walking~/.claude/AGENTS{.override,}.md→ git-root → cwd, picking one ofAGENTS.override.md/AGENTS.md/CLAUDE.mdper directory, concat with<!-- source: <path> -->headers, capped at 32 KiB. HonorsCLAUDE_HOMEenv override for CI parity with Codex'sCODEX_HOME ProjectRulesCardinSettings → Project Rulesreads + writes bothAGENTS.mdandCLAUDE.mdon save; surfaces a Unify affordance when the two files diverge; offers a starter template when neither exists- Hover-
+Codex-App-style diff comments: per-line+button inToolDiffViewopens an inline composer; queued comments fold into the next user turn as aFile comments:preamble - Smart-approval prefix-rule proposal:
PermissionPromptgains a fourth row "Always allow rule<pattern>"; one click writes the derived pattern intoconversation.allowedTools - Composer-mode segmented control (Local / Worktree / Cloud) replaces the binary worktree toggle; persisted via localStorage
- Right-rail tabbed mode (
AgentTabbedRail) with Plan / Diff / Inspector tabs in a single 340 px column; toggleable from chat header - Persistent goals bridged to Missions: new
goalStore+/goalslash command + goal-bound footer in PlanPanel (Pause / Resume / Complete) + 🎯 N badge per Mission row LiveSpendChipin toolbar combining today's persisted total (analyticsStore) + live in-memory session $ across every open API conversation- Old-model pinning per profile via
pinnedModelfield; resolves asprofile.pinnedModel ?? selectedModel ?? getDefaultModel(agent)at launch - Plan-with-Claude → Execute-with-Codex one-click handoff: PlanPanel "Hand off to Codex →" button when parent is Claude AND Codex auth is
ready; spawns a fresh Codex conversation seeded withbuildHandoffPrompt(parent)(distilled spec + plan + discussion summary, capped at 12 KiB);parentConversationIdfield wires a "← back to plan" link in the child's chat header
Follow-ups (F1–F10)
- Auto-resume hydrated conversations: extracted listener block into
installApiAgentListenershelper;sendMessageroutes the first post-restart send throughresumeApiConversationwith the storedresumeToken - In-process providers honor
mergedContentfor per-hunk diff acceptance (parity with sidecar Anthropic) - Anthropic sidecar emits
tool_output_extended(Bash exit code + stdout/stderr; Write/Edit modifiedPaths) andturn_summary(running per-message tokens for live SessionHealthBar updates)
Fixed
- macOS title bar shows native traffic-light controls — config switched to
decorations: true+titleBarStyle: "Overlay"+hiddenTitle: true;lib.rssetup hook strips decorations at runtime on Windows + Linux so the custom chrome stays the only chrome there.TitleBar.tsxdetects macOS via userAgent, hides the Win-style min/max/close cluster, reserves 78 px of left padding for the traffic-light area - Standalone
target/<profile>/packetade.exereported "Sidecar down" — two stacked bugs:- Capability gate:
app.shell().sidecar("node")is rejected by Tauri's permission layer unless an explicitshell:allow-executeentry listsnodewithsidecar: true(added in74e6ba9) - Per-triple Node binary missing: Tauri's shell plugin on Windows resolves
sidecar("node")to<exe_dir>/node-<target-triple>.exe, not genericnode.exe;build.rsnow copiesbinaries/node-<triple>.<ext>into the cargo output directory at compile time (added in8f49083)
- Capability gate:
Removed
.github/workflows/{build,ci,release}.yml— builds and releases run locally; no GitHub Actions CI in this repo
Sidecar protocol
PROTOCOL_VERSION = 4. v4 addedcancel_pending_toolsrequest. v3 added typedattachmentsonstart_session/send_message,mergedContentonedit_response,batchId/batchSizeonpermission_request,resumeTokenondone, plusplan_block/tool_output_extended/turn_summaryevents. Old sidecars reply "Unknown request type" to v3+ requests; supervisor warns on version mismatch (does not refuse)