* chore(release): stop publishing legacy Windows update packages * feat(agents): support OpenCode Desktop across platforms Detect CLI and desktop installations on Windows, macOS, and Linux, and add separate launch and restart controls. Closes #156 * fix(codex): align model display names and show total session count - preserve runtime model identity in generated catalogs - count distinct sessions across database and rollout sources - update session count labels in all supported languages * fix(codex): keep config and auth files in sync - generate auth.json for API key configuration - preserve and validate OAuth credentials - include auth.json in transactional updates and rollback - retain compatibility with legacy Codex configuration states * fix(cpa-gui): update version to 0.2.59 in Cargo files * fix(codex): preserve OAuth mode after closing configuration * feat(config): add TLS management and protocol-aware local URLs - add TLS controls to advanced settings - persist certificate and private key paths - restart the core after TLS changes - switch WebUI, API and management URLs between HTTP and HTTPS - synchronize agent configurations and detection with the active protocol * refactor(config): reorganize network, routing, and TLS settings - split network settings and session routing into separate tabs - move TLS configuration into network settings - preserve TLS restart and HTTPS URL synchronization behavior * feat(config): add independent network settings and custom listen IP * fix(navigation): allow access to usage records while core is stopped * refactor(home): show a single API URL based on the configured listen IP * feat(config): add file pickers for TLS certificate and private key * fix(usage): distinguish client cancellations from request failures - persist usage failure status and response details - classify HTTP 499 and canceled contexts separately - exclude canceled requests from failure statistics - add canceled filtering and failure details to the usage UI - migrate and backfill existing usage records * feat(ui): revamp usage records and improve app interactions - redesign usage records dashboard, filters, charts, and pricing views - add resizable centered columns with persisted widths - expose OpenCode desktop launch and restart actions - suppress the API access enabled success notice * feat(agents): persist applied configurations across app restarts - preserve applied agent configs and managed Claude aliases on exit - keep explicit close actions restoring original configurations - add Codex restart persistence regression coverage - bump desktop version to 0.2.61 * fix(model-aliases): support provider-aware OAuth aliases - map OAuth aliases to their correct provider channels - support Antigravity aliases with force mapping - read and delete aliases by their exact OAuth channel - refresh the runtime model registry after alias changes - restrict Fast aliases to GPT models from OpenAI-compatible or Codex sources * docs(readme): add APIMart sponsorship sections - add English and Chinese sponsor descriptions - add localized APIMart banner images
52 lines
1.5 KiB
Rust
52 lines
1.5 KiB
Rust
use super::*;
|
|
|
|
pub(super) fn agent_test_home(name: &str) -> PathBuf {
|
|
let path = std::env::temp_dir().join(format!(
|
|
"cpa-gui-agent-{name}-{}-{}",
|
|
std::process::id(),
|
|
SystemTime::now()
|
|
.duration_since(UNIX_EPOCH)
|
|
.unwrap()
|
|
.as_nanos()
|
|
));
|
|
fs::create_dir_all(&path).unwrap();
|
|
path
|
|
}
|
|
|
|
pub(super) fn test_agent_models(names: &[&str]) -> Vec<AgentModelOption> {
|
|
names
|
|
.iter()
|
|
.map(|name| AgentModelOption {
|
|
name: (*name).to_string(),
|
|
alias: None,
|
|
is_alias: false,
|
|
context_window: Some(200_000),
|
|
})
|
|
.collect()
|
|
}
|
|
|
|
pub(super) fn test_codex_models(names: &[&str]) -> String {
|
|
let payload = serde_json::json!({
|
|
"models": names.iter().map(|name| serde_json::json!({ "id": name })).collect::<Vec<_>>()
|
|
});
|
|
let runtime = codex_catalog::parse_runtime_models(&payload).unwrap();
|
|
codex_catalog::prepare_catalog(&runtime).unwrap().json
|
|
}
|
|
|
|
pub(super) fn test_codex_oauth_thinking_source(model: &str) -> ResolvedThinkingAliasSource {
|
|
ResolvedThinkingAliasSource {
|
|
source: ThinkingAliasSource {
|
|
id: format!("codex-oauth:{model}"),
|
|
model: model.to_string(),
|
|
display_name: None,
|
|
provider: "Codex OAuth".to_string(),
|
|
kind: "codex-oauth".to_string(),
|
|
protocol: "codex".to_string(),
|
|
},
|
|
location: ThinkingAliasSourceLocation::Oauth {
|
|
channel: "codex",
|
|
force_mapping: false,
|
|
},
|
|
}
|
|
}
|