Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
20 commits
Select commit Hold shift + click to select a range
15409b3
feat(codex): upgrade codex-acp to 1.1.4 and handle new live signals
xintaofei Jul 16, 2026
de8ff77
feat(codex): show sub-agent model and reasoning effort on live collab…
xintaofei Jul 16, 2026
03fb30b
feat(codex): suppress redundant /plan slash command in favor of mode …
xintaofei Jul 16, 2026
c84f4a3
feat(codex): add goal pause/clear control via _codex/session/goal_con…
xintaofei Jul 16, 2026
c362a7c
fix(codex): render a bodyless sub-agent capsule as a bare pill
xintaofei Jul 16, 2026
936cd84
Merge branch 'main' into main-0716
xintaofei Jul 23, 2026
56162f3
Merge branch 'main' into main-0716
xintaofei Jul 23, 2026
a3607a2
feat(sidebar): hide completed sessions by default, import as pending …
xintaofei Jul 24, 2026
47822d6
feat(layout): rank branch selector search results by relevance, exact…
xintaofei Jul 24, 2026
ec3df83
feat(settings): add Claude Code toggles for attribution header and te…
xintaofei Jul 24, 2026
f11735b
feat(acp): render Grok plan-mode approval card for exit_plan_mode
xintaofei Jul 24, 2026
78d859d
feat(codex): bridge codex-acp elicitation to native ask and permissio…
xintaofei Jul 24, 2026
06bd9c0
feat(settings): exclude built-in expert/office/science skills from ag…
xintaofei Jul 24, 2026
7bd87da
fix(messages): fit the user message capsule to its content instead of…
xintaofei Jul 24, 2026
3eecc9f
Merge branch 'main-0716' into main
xintaofei Jul 24, 2026
848648d
perf(conversations): hide the outgoing tab immediately on session switch
xintaofei Jul 24, 2026
ba9c7d5
fix(messages): fit the ask-question result capsule to its content ins…
xintaofei Jul 24, 2026
1fe8d93
Merge remote-tracking branch 'origin/main'
xintaofei Jul 24, 2026
feedf14
fix(acp): raise crate recursion_limit so the connection async frame c…
xintaofei Jul 24, 2026
af9de65
Merge remote-tracking branch 'origin/main'
xintaofei Jul 24, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion src-tauri/Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -100,7 +100,7 @@ toml_edit = "0.19"
serde_yaml = "0.9"
notify = "6"
base64 = "0.22"
agent-client-protocol-schema = { version = "0.11", features = ["unstable_session_usage", "unstable_session_fork", "unstable_session_resume"] }
agent-client-protocol-schema = { version = "0.11", features = ["unstable_session_usage", "unstable_session_fork", "unstable_session_resume", "unstable_elicitation"] }
kill_tree = { version = "0.2", features = ["tokio"] }
which = "7"
keyring = { version = "3", features = ["apple-native", "windows-native", "sync-secret-service"], optional = true }
Expand Down
30 changes: 30 additions & 0 deletions src-tauri/src/acp/codex_goal.rs
Original file line number Diff line number Diff line change
Expand Up @@ -248,6 +248,36 @@ mod tests {
assert_eq!(input["objective"], "Fix the login bug");
}

#[test]
fn preserves_v114_slimmed_snapshot_fields() {
// codex-acp v1.1.4 (#293) slimmed the goal snapshot: it dropped
// `tokensUsed` and added `createdAt` / `controlMethod` (alongside the
// existing `tokenBudget` / `timeUsedSeconds`). `goal_marker` clones the
// object through, so the new fields survive onto the card output and the
// absent `tokensUsed` is simply not present — `GoalCard` reads it as null
// and hides that stat, so no display breaks.
let goal = json!({
"objective": " Ship the release ",
"status": "active",
"tokenBudget": 200000,
"timeUsedSeconds": 42,
"createdAt": "2026-07-16T10:00:00Z",
"controlMethod": "_codex/session/goal_control",
});
let m = goal_marker(&goal).expect("goal marker");
assert_eq!(m.tool_name, "create_goal");
let out: Value = serde_json::from_str(&m.output_json).unwrap();
let g = &out["goal"];
assert_eq!(g["objective"], "Ship the release"); // trimmed
assert_eq!(g["status"], "active");
assert_eq!(g["tokenBudget"], 200000);
assert_eq!(g["timeUsedSeconds"], 42);
assert_eq!(g["createdAt"], "2026-07-16T10:00:00Z");
assert_eq!(g["controlMethod"], "_codex/session/goal_control");
// Slimmed snapshot carries no tokensUsed → the card hides that stat.
assert!(g.get("tokensUsed").is_none());
}

#[test]
fn goal_tool_call_id_is_occurrence_unique() {
// Occurrence-addressed so two runs sharing an objective never collide.
Expand Down
989 changes: 944 additions & 45 deletions src-tauri/src/acp/connection.rs

Large diffs are not rendered by default.

1 change: 1 addition & 0 deletions src-tauri/src/acp/delegation/listener.rs
Original file line number Diff line number Diff line change
Expand Up @@ -1859,6 +1859,7 @@ mod tests {
description: String::new(),
},
],
is_secret: false,
}],
})
}
Expand Down
Loading
Loading