Skip to content

[pull] main from xintaofei:main#156

Merged
pull[bot] merged 20 commits into
MoozLee:mainfrom
xintaofei:main
Jul 24, 2026
Merged

[pull] main from xintaofei:main#156
pull[bot] merged 20 commits into
MoozLee:mainfrom
xintaofei:main

Conversation

@pull

@pull pull Bot commented Jul 24, 2026

Copy link
Copy Markdown

See Commits and Changes for more details.


Created by pull[bot] (v2.0.0-alpha.4)

Can you help keep this open source service alive? 💖 Please sponsor : )

xintaofei added 20 commits July 16, 2026 11:01
Pin codex-acp to 1.1.4 (codex 0.144.4) and adapt to the three new
runtime signals it emits so the upgrade is regression-free:

- Retry: surface `_meta.codex.error` (willRetry only) as a transient
  TurnRetrying event, reusing the existing retry banner.
- Context compaction: render `_meta.contextCompaction` tool calls as a
  dedicated status card instead of a generic tool shell.
- Sub-agent activity: suppress `_meta.codex.subagent` tool calls at the
  emit point to preserve current live and reload behavior.
… card

Surface the sub-agent's model and reasoningEffort (codex-acp #304, top-level
in the collab tool-call rawInput) on the live execution capsule — info that
was previously visible only after a history reload. Gated to the spawn capsule
so the live and reconstructed wait capsules stay in parity.
…selector

codex-acp 1.1.4 (#293) advertises `/plan` as an AvailableCommand tagged
`_meta.commandAction.kind = "setConfigOption"` (configId `collaboration_mode`,
presentation `state`) — codex's signal that the client should render it as
state, not an invokable command. codeg already surfaces that state through the
generic `collaboration_mode` config-option selector, so listing `/plan` in the
slash menu is redundant and its static description is wrong once plan mode is
already on. Drop config-option state toggles from the command list, gated on
Codex; commands with other action kinds (e.g. `/goal`'s `prefixPrompt`) stay.
…trol

codex-acp 1.1.4 (#293) exposes a bespoke `_codex/session/goal_control` request
({sessionId, action: "pause"|"clear"}) to pause or clear the session's active
goal. Wire it end-to-end, mirroring set_config_option: a GoalControlAction enum
and ConnectionCommand::GoalControl, a UntypedMessage sender (the escape hatch
already used for set_config_option / fork), both connection dispatch arms, a
manager method, and the tauri command + HTTP endpoint. The backend sources the
sessionId from the live session, so the frontend only supplies connectionId.

On the card, GoalCard gains Pause/Clear buttons driven by a goal-control
context: the panel decides liveness + ownership once and passes a callback, so
the buttons hide on history reload, for viewers, and in the read-only sub-agent
dialog (which renders MessageListView with no provider). Pause shows for an
active goal, Clear for active or paused; resume is re-issuing the /goal prompt.

Also pin 1.1.4's slimmed goal snapshot: it drops tokensUsed and adds
createdAt / controlMethod, which pass through goal_marker unchanged while the
absent tokensUsed degrades to a hidden stat.
AgentCapsule always drew a bordered, scrollable body frame below the pill, so a
capsule whose conditional children were all absent rendered an empty "white
box". The newer codex triggers this on every wait_agent — its wait returns no
per-agent result, leaving the collab wait capsule with nothing to show.

Detect an empty body with Children.toArray (which drops the false/null entries
of the callers' conditional children) and, when there's nothing to show, render
just a bare, non-interactive pill — no chevron, no frame. Fixes the long-standing
sub-agent white box for both the live collab card and the history Agent capsule.
# Conflicts:
#	src/components/conversations/conversation-detail-panel.tsx
#	src/components/message/agent-capsule.tsx
…review

The "Show completed" view toggle now defaults to off, so finished conversations are hidden until the user enables it. Imported local sessions are created with pending-review status instead of completed, keeping them visible under the new default and flagged for review.
…lemetry

Add two switches below the reasoning settings on the Claude Code config
page that control native config env vars in ~/.claude/settings.json:

- Send attribution/billing identifier to the API
  (CLAUDE_CODE_ATTRIBUTION_HEADER) — default off
- Disable telemetry or redundant network requests
  (CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC) — default on

Each toggle writes an explicit value to both the native config env and the
DB env overlay, and the defaults are materialized on save. Labels are
localized across all supported locales.
Grok's native exit_plan_mode sends a blocking _x.ai/exit_plan_mode request to get the user's decision before leaving plan mode. codeg had no handler, so the turn stalled with nothing rendered. Bridge it to an interactive approval card (approve / request changes / abandon), shown in both the main conversation and the delegated sub-agent dialog and carried on the session snapshot so a mid-turn attach recovers it. Cancelling a turn now reclaims the pending question and plan-approval registries so the next request still renders.

Also fix a pre-existing test that asserted a conversation status against the enum variant instead of its serialized string.
…n cards

Advertise elicitation.form to codex and classify every form it sends — Plan-mode request_user_input, generic MCP forms, MCP tool-call approvals, and message-only confirms — into either the interactive ask card or the permission card, replying with typed content.

Render the request_user_input ask consistently: synthesized in-stream while live, and standalone with the chosen answer echoed on history reload (hoisted out of the generic tool group, with codex's id-keyed answer envelope now parsed).

Pin codex-acp 1.1.7, keep the codeg-mcp injection from being dropped by config.toml name filtering, render <proposed_plan> as a markdown card, and run each ACP connection on a dedicated 8 MiB thread to avoid a debug-only stack overflow.

Mask secret answers, and support free-text (option-less) questions in the ask card.
Integrate the codex-acp elicitation bridge (Plan-mode request_user_input and
generic MCP forms routed to the native ask and permission cards), the
codex-acp 1.1.7 pin, standalone goal capsules, and grok exit-plan approval.

Grok's exit_plan_mode and codex's elicitation/create requests register as
side-by-side ACP handlers; the connection context exposes both
answerPlanApproval and goalControl; the folded task-duration outcome renders
as a body-less "Completed" chip.
Drive each tab's isActive/showActiveFlow from a deferred active id so the visibility toggle commits before the memoized ConversationTabView bodies re-render, instead of the previous view (notably the new-session welcome page) lingering until that heavy work finished.
…ompiles

The block_on(async move { … }) frame wrapping run_connection nests deep enough that computing its type layout overflows rustc's default query depth of 128. Set recursion_limit to 256 on the codeg_lib crate root.
@pull pull Bot locked and limited conversation to collaborators Jul 24, 2026
@pull pull Bot added the ⤵️ pull label Jul 24, 2026
@pull
pull Bot merged commit af9de65 into MoozLee:main Jul 24, 2026
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant