diff --git a/.github/workflows/rust-release.yml b/.github/workflows/rust-release.yml index 3f1c084d91..812d7a3cfe 100644 --- a/.github/workflows/rust-release.yml +++ b/.github/workflows/rust-release.yml @@ -181,9 +181,9 @@ jobs: name: ${{ steps.release_name.outputs.name }} tag_name: ${{ github.ref_name }} files: dist/** - # For now, tag releases as "prerelease" because we are not claiming - # the Rust CLI is stable yet. - prerelease: true + # Mark as prerelease only when the version has a suffix after x.y.z + # (e.g. -alpha, -beta). Otherwise publish a normal release. + prerelease: ${{ contains(steps.release_name.outputs.name, '-') }} - uses: facebook/dotslash-publish-release@v2 env: diff --git a/codex-rs/core/src/openai_model_info.rs b/codex-rs/core/src/openai_model_info.rs index 51f028cbdd..935eb8be4f 100644 --- a/codex-rs/core/src/openai_model_info.rs +++ b/codex-rs/core/src/openai_model_info.rs @@ -14,10 +14,19 @@ pub(crate) struct ModelInfo { pub(crate) max_output_tokens: u64, } -/// Note details such as what a model like gpt-4o is aliased to may be out of -/// date. pub(crate) fn get_model_info(model_family: &ModelFamily) -> Option { match model_family.slug.as_str() { + // OSS models have a 128k shared token pool. + // Arbitrarily splitting it: 3/4 input context, 1/4 output. + // https://openai.com/index/gpt-oss-model-card/ + "gpt-oss-20b" => Some(ModelInfo { + context_window: 96_000, + max_output_tokens: 32_000, + }), + "gpt-oss-120b" => Some(ModelInfo { + context_window: 96_000, + max_output_tokens: 32_000, + }), // https://platform.openai.com/docs/models/o3 "o3" => Some(ModelInfo { context_window: 200_000, diff --git a/codex-rs/tui/src/app.rs b/codex-rs/tui/src/app.rs index 1142bd87fc..da5410d392 100644 --- a/codex-rs/tui/src/app.rs +++ b/codex-rs/tui/src/app.rs @@ -233,7 +233,8 @@ impl App<'_> { widget.on_ctrl_c(); } AppState::GitWarning { .. } => { - // No-op. + // Allow exiting the app with Ctrl+C from the warning screen. + self.app_event_tx.send(AppEvent::ExitRequest); } } } @@ -415,7 +416,7 @@ impl App<'_> { let size = terminal.size()?; let desired_height = match &self.app_state { AppState::Chat { widget } => widget.desired_height(size.width), - AppState::GitWarning { .. } => 10, + AppState::GitWarning { .. } => size.height, }; let mut area = terminal.viewport_area;