StatusEngine for TUI status display

Resolved 💬 8 comments Opened Sep 10, 2025 by MaurUppi Closed Jan 31, 2026
💡 Likely answer: A maintainer (aibrahim-oai, contributor) responded on this thread — see the highlighted reply below.

What feature would you like to see?

What: TUI footer model info, CWD, thinking effort, git status, sandbox info
Why: Currently, it is inconvenient without additional information or status in TUI (examples in below)
How: Implemented as an optional StatusEngine with external provider support
Evidence: Working implementation is ready for a PR with screenshots
Impact: Non-breaking, optional feature with comprehensive tests

Config (TOML) for StatusEngine

- Location: ~/.codex/config.toml
- Section: [tui]
- Keys:
    - statusengine = true               # enable the feature (if absent or false → StatusEngine disabled; Line 1 only)
    - provider = "command" | "builtin"  # provider for Line 3; if unset or "builtin" → render Line 2 only
    - command = "path/to/executable"    # used only when provider = "command"
    - command_timeout_ms = 350          # allow more time if the script aggregates many items (typical 150–500 ms)

Buildin: line 2
<img width="956" height="133" alt="Image" src="https://github.com/user-attachments/assets/4e13c2be-77e8-4805-b7d2-47dc97b213ab" />

command info: Line 3
<img width="988" height="162" alt="Image" src="https://github.com/user-attachments/assets/0aeab29b-e0dd-4427-bcfc-aa716b743b85" />

External command can
• Read payload JSON from stdin, then
• Print exactly one line to stdout within the timeout (default ~300 ms, configurable)
• stdout takes only the first stdout line, trims it, and renders it as Line 3.
• An example : "🟢 P95:1033ms DNS:3ms|TCP:0ms|TLS:184ms|TTFB:657ms|Total:847ms" will render and display on Line 3.

Payload JSON example

{
  "session_id": "965f51fd-c523-4369-bf4a-5f832cf1aafa",
  "model": {
    "id": "gpt-5"
  },
  "effort": "medium",
  "workspace": {
    "name": "codex",
    "current_dir": "/Users/MaurUppi/Documents/DevProjects/codex"
  },
  "cwd": "/Users/MaurUppi/Documents/DevProjects/codex",
  "git": {
    "branch": "feat/statusengine",
    "counts": "+1 -1"
  },
  "sandbox": "workspace-write",
  "approval": "on-request",
  "timing": {
    "since_session_ms": 189752
  }
}

Are you interested in implementing this feature?

PR is ready for submission IF approved.

Additional information

I have read the CLA Document and I hereby sign the CLA

View original on GitHub ↗

8 Comments

MaurUppi · 10 months ago

Feature branch is here https://github.com/MaurUppi/codex/tree/feat/statusengine-clean

StatusEngine folder included markdown format doc

  • Requirement design
  • Accomplishment report
  • Assessment Report
luodaoyi · 10 months ago

车友前来助力!

MaurUppi · 10 months ago

According to contributing guidelines, I open a Feature Proposal as an Enhancement issue before PR.
@aibrahim-oai @bolinfest May I know if there is a Feature proposal review process?

Wish has a chance for contribution.

MaurUppi · 10 months ago

cargo test && cargo clippy --tests && cargo fmt -- --config imports_granularity=Item in codex-rs/ folder

All passed except "Warning: can't set imports_granularity = Item, unstable features are only available in nightly channel."

<details><summary>Test result</summary>
<p>

cargo test && cargo clippy --tests && cargo fmt -- --config imports_granularity=Item
Compiling codex-tui v0.0.0 (/Users/ouzy/Documents/DevProjects/codex/codex-rs/tui)
Finished test profile [unoptimized + debuginfo] target(s) in 0.77s
Running unittests src/lib.rs (target/debug/deps/codex_ansi_escape-0ec488a6ac76077f)

running 0 tests

test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s

Running unittests src/lib.rs (target/debug/deps/codex_apply_patch-a86fd0b0e396158d)

running 38 tests
test parser::test_parse_one_hunk ... ok
test parser::test_update_file_chunk ... ok
test seek_sequence::tests::test_pattern_longer_than_input_returns_none ... ok
test tests::test_apply_patch_fails_on_write_error ... ok
test parser::test_parse_patch ... ok
test parser::test_parse_patch_lenient ... ok
test seek_sequence::tests::test_exact_match_finds_sequence ... ok
test seek_sequence::tests::test_trim_match_ignores_leading_and_trailing_whitespace ... ok
test seek_sequence::tests::test_rstrip_match_ignores_trailing_whitespace ... ok
test tests::test_add_file_hunk_creates_file_with_contents ... ok
test tests::test_delete_file_hunk_removes_file ... ok
test tests::test_apply_patch_should_resolve_absolute_paths_in_cwd ... ok
test tests::test_cd_pipe_apply_patch_is_ignored ... ok
test tests::test_heredoc ... ok
test tests::test_cd_double_quoted_path_with_spaces ... ok
test tests::test_cd_with_semicolon_is_ignored ... ok
test tests::test_cd_then_apply_patch_then_extra_is_ignored ... ok
test tests::test_apply_patch_with_arg_is_ignored ... ok
test tests::test_double_cd_then_apply_patch_is_ignored ... ok
test tests::test_cd_single_quoted_path_with_spaces ... ok
test tests::test_cd_or_apply_patch_is_ignored ... ok
test tests::test_cd_two_args_is_ignored ... ok
test tests::test_echo_then_cd_and_apply_patch_is_ignored ... ok
test tests::test_echo_and_apply_patch_is_ignored ... ok
test tests::test_heredoc_applypatch ... ok
test tests::test_literal ... ok
test tests::test_heredoc_with_leading_cd ... ok
test tests::test_literal_applypatch ... ok
test tests::test_update_file_hunk_modifies_content ... ok
test tests::test_multiple_update_chunks_apply_to_single_file ... ok
test tests::test_unified_diff_insert_at_eof ... ok
test tests::test_unified_diff ... ok
test tests::test_unified_diff_first_line_replacement ... ok
test tests::test_unified_diff_last_line_replacement ... ok
test tests::test_update_file_hunk_interleaved_changes ... ok
test tests::test_update_file_hunk_can_move_file ... ok
test tests::test_unified_diff_interleaved_changes ... ok
test tests::test_update_line_with_unicode_dash ... ok

test result: ok. 38 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.02s

Running unittests src/main.rs (target/debug/deps/apply_patch-fb8a941ec860a3e2)

running 0 tests

test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s

Running tests/all.rs (target/debug/deps/all-bbadc8e27fb4a747)

running 2 tests
test suite::cli::test_apply_patch_cli_add_and_update ... ok
test suite::cli::test_apply_patch_cli_stdin_add_and_update ... ok

test result: ok. 2 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.12s

Running unittests src/lib.rs (target/debug/deps/codex_arg0-02d9eaf4cde0cdfe)

running 0 tests

test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s

Running unittests src/lib.rs (target/debug/deps/codex_chatgpt-37feda894fb344b0)

running 0 tests

test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s

Running tests/all.rs (target/debug/deps/all-ae80875c0354be80)

running 2 tests
test suite::apply_command_e2e::test_apply_command_creates_fibonacci_file ... ok
test suite::apply_command_e2e::test_apply_command_with_merge_conflicts ... ok

test result: ok. 2 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.15s

Running unittests src/lib.rs (target/debug/deps/codex_cli-429f0f85b33cb6d9)

running 2 tests
test login::tests::formats_long_key ... ok
test login::tests::short_key_returns_stars ... ok

test result: ok. 2 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s

Running unittests src/main.rs (target/debug/deps/codex-1ed98efdecf5406a)

running 0 tests

test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s

Running unittests src/lib.rs (target/debug/deps/codex_common-94c528d30a787a8e)

running 15 tests
test fuzzy_match::tests::ascii_basic_indices ... ok
test fuzzy_match::tests::prefer_contiguous_match_over_spread ... ok
test elapsed::tests::test_format_duration_minutes ... ok
test elapsed::tests::test_format_duration_subsecond ... ok
test elapsed::tests::test_format_duration_seconds ... ok
test fuzzy_match::tests::empty_needle_matches_with_max_score_and_no_indices ... ok
test fuzzy_match::tests::case_insensitive_matching_basic ... ok
test fuzzy_match::tests::indices_are_deduped_for_multichar_lowercase_expansion ... ok
test fuzzy_match::tests::unicode_dotted_i_istanbul_highlighting ... ok
test fuzzy_match::tests::unicode_german_sharp_s_casefold ... ok
test fuzzy_match::tests::start_of_string_bonus_applies ... ok
test config_override::tests::fails_on_unquoted_string ... ok
test config_override::tests::parses_basic_scalar ... ok
test config_override::tests::parses_inline_table ... ok
test config_override::tests::parses_array ... ok

test result: ok. 15 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s

Running unittests src/lib.rs (target/debug/deps/codex_core-c5c163ad1ce98234)

running 191 tests
test bash::tests::accepts_numbers_as_words ... ok
test bash::tests::extracts_double_and_single_quoted_strings ... ok
test bash::tests::accepts_single_simple_command ... ok
test auth::tests::logout_removes_auth_file ... ok
test bash::tests::accepts_multiple_commands_with_allowed_operators ... ok
test bash::tests::rejects_parentheses_and_subshells ... ok
test bash::tests::rejects_command_and_process_substitutions_and_expansions ... ok
test bash::tests::rejects_redirections_and_unsupported_operators ... ok
test bash::tests::rejects_variable_assignment_prefix ... ok
test bash::tests::rejects_trailing_operator_parse_error ... ok
test client::tests::error_when_missing_completed ... ok
test client::tests::parses_items_and_completed ... ok
test client::tests::error_when_error_event ... ok
test client::tests::table_driven_event_kinds ... ok
test client::tests::test_try_parse_retry_after ... ok
test client::tests::test_try_parse_retry_after_no_delay ... ok
test client_common::tests::omits_text_when_not_set ... ok
test client_common::tests::get_full_instructions_no_user_content ... ok
test client_common::tests::serializes_text_verbosity_when_set ... ok
test codex::tests::bypasses_translation_for_zsh_without_snapshot_or_profile ... ok
test codex::tests::falls_back_to_content_when_structured_is_null ... ok
test codex::tests::prefers_structured_content_when_present ... ok
test codex::tests::success_flag_reflects_is_error_true ... ok
test codex::tests::success_flag_true_with_no_error_and_content_used ... ok
test auth::tests::roundtrip_auth_dot_json ... ok
test codex::tests::translates_commands_when_shell_policy_requests_profile ... ok
test codex::tests::model_truncation_head_tail_by_lines ... ok
test codex::tests::translates_commands_for_zsh_with_snapshot ... ok
test codex::tests::model_truncation_respects_byte_budget ... ok
test config::tests::test_sandbox_config_parsing ... ok
test config::tests::test_precedence_fixture_with_gpt3_profile ... ok
test conversation_history::tests::filters_non_api_messages ... ok
test config::tests::test_toml_parsing ... ok
test conversation_manager::tests::drops_from_last_user_only ... ok
test config::tests::test_precedence_fixture_with_gpt5_profile ... ok
test config::tests::test_set_project_trusted_writes_explicit_tables ... ok
test config::tests::test_precedence_fixture_with_zdr_profile ... ok
test config::tests::test_precedence_fixture_with_o3_profile ... ok
test custom_prompts::tests::empty_when_dir_missing ... ok
test config::tests::test_set_project_trusted_converts_inline_to_explicit ... ok
test error::tests::usage_limit_reached_error_formats_default_for_other_plans ... ok
test error::tests::usage_limit_reached_error_formats_default_when_none ... ok
test error::tests::usage_limit_reached_error_formats_plus_plan ... ok
test custom_prompts::tests::excludes_builtins ... ok
test error::tests::usage_limit_reached_includes_days_hours_minutes ... ok
test error::tests::usage_limit_reached_includes_hours_and_minutes ... ok
test error::tests::usage_limit_reached_includes_minutes_when_available ... ok
test error::tests::usage_limit_reached_less_than_minute ... ok
test exec_command::session_manager::tests::to_text_output_exited_no_truncation ... ok
test custom_prompts::tests::skips_non_utf8_files ... ok
test exec_command::session_manager::tests::to_text_output_ongoing_with_truncation ... ok
test exec_env::tests::test_core_inherit_and_default_excludes ... ok
test exec_command::session_manager::tests::truncate_middle_no_newlines_fallback ... ok
test exec_command::session_manager::tests::truncate_middle_prefers_newline_boundaries ... ok
test custom_prompts::tests::discovers_and_sorts_files ... ok
test exec_env::tests::test_include_only ... ok
test exec_env::tests::test_inherit_all ... ok
test exec_env::tests::test_inherit_all_with_default_excludes ... ok
test exec_env::tests::test_inherit_none ... ok
test exec_env::tests::test_set_overrides ... ok
test default_client::tests::test_get_codex_user_agent ... ok
test default_client::tests::test_macos ... ok
test git_info::tests::resolve_root_git_project_for_trust_returns_none_outside_repo ... ok
test git_info::tests::test_collect_git_info_non_git_directory ... ok
test git_info::tests::resolve_root_git_project_for_trust_non_worktrees_gitdir_returns_none ... ok
test auth::tests::loads_api_key_from_auth_json ... ok
test auth::tests::pro_account_with_no_api_key_uses_chatgpt_auth ... ok
test auth::tests::pro_account_with_api_key_still_uses_chatgpt_auth ... ok
test auth::tests::enterprise_account_with_api_key_uses_apikey_auth ... ok
test default_client::tests::test_create_client_sets_default_headers ... ok
test git_info::tests::test_git_info_serialization ... ok
test git_info::tests::test_git_info_serialization_with_nones ... ok
test is_safe_command::tests::bash_lc_safe_examples ... ok
test is_safe_command::tests::bash_lc_safe_examples_with_operators ... ok
test is_safe_command::tests::bash_lc_unsafe_examples ... ok
test is_safe_command::tests::known_safe_examples ... ok
test is_safe_command::tests::ripgrep_rules ... ok
test is_safe_command::tests::unknown_or_partial ... ok
test mcp_connection_manager::tests::test_qualify_tools_duplicated_names_skipped ... ok
test mcp_connection_manager::tests::test_qualify_tools_long_names_same_server ... ok
test mcp_connection_manager::tests::test_qualify_tools_short_non_duplicated_names ... ok
test model_provider_info::tests::test_deserialize_azure_model_provider_toml ... ok
test model_provider_info::tests::test_deserialize_example_model_provider_toml ... ok
test model_provider_info::tests::test_deserialize_ollama_model_provider_toml ... ok
test openai_tools::tests::test_get_openai_tools ... ok
test openai_tools::tests::test_get_openai_tools_default_shell ... ok
test openai_tools::tests::test_get_openai_tools_mcp_tools ... ok
test openai_tools::tests::test_get_openai_tools_mcp_tools_sorted_by_name ... ok
test openai_tools::tests::test_mcp_tool_anyof_defaults_to_string ... ok
test openai_tools::tests::test_mcp_tool_array_without_items_gets_default_string_items ... ok
test openai_tools::tests::test_mcp_tool_integer_normalized_to_number ... ok
test openai_tools::tests::test_mcp_tool_property_missing_type_defaults_to_string ... ok
test openai_tools::tests::test_shell_tool_for_sandbox_danger_full_access ... ok
test openai_tools::tests::test_shell_tool_for_sandbox_readonly ... ok
test openai_tools::tests::test_shell_tool_for_sandbox_workspace_write ... ok
test parse_command::tests::bash_cd_then_bar_is_same_as_bar ... ok
test parse_command::tests::bash_cd_then_cat_is_read ... ok
test parse_command::tests::bash_dash_c_pipeline_parsing ... ok
test parse_command::tests::bash_lc_redirect_not_quoted ... ok
test parse_command::tests::cat_with_double_dash_and_sed_ranges ... ok
test parse_command::tests::cd_then_cat_is_single_read ... ok
test parse_command::tests::drop_trailing_nl_in_pipeline ... ok
test parse_command::tests::drops_yes_in_pipelines ... ok
test parse_command::tests::empty_tokens_is_not_small ... ok
test parse_command::tests::fd_file_finder_variants ... ok
test parse_command::tests::filters_out_printf ... ok
test parse_command::tests::find_basic_name_filter ... ok
test parse_command::tests::find_type_only_path ... ok
test parse_command::tests::git_status_is_unknown ... ok
test parse_command::tests::grep_with_query_and_path ... ok
test parse_command::tests::handles_complex_bash_command ... ok
test parse_command::tests::handles_complex_bash_command_head ... ok
test parse_command::tests::handles_git_pipe_wc ... ok
test parse_command::tests::head_behavior ... ok
test parse_command::tests::head_with_no_space ... ok
test parse_command::tests::ls_with_glob ... ok
test parse_command::tests::ls_with_time_style_and_path ... ok
test parse_command::tests::parses_mixed_sequence_with_pipes_semicolons_and_or ... ok
test parse_command::tests::preserves_rg_with_spaces ... ok
test parse_command::tests::rg_with_equals_style_flags ... ok
test parse_command::tests::sed_behavior ... ok
test parse_command::tests::shorten_path_on_windows ... ok
test parse_command::tests::small_formatting_always_true_commands ... ok
test parse_command::tests::split_on_or_connector ... ok
test parse_command::tests::strips_true_in_sequence ... ok
test parse_command::tests::strips_true_inside_bash_lc ... ok
test parse_command::tests::supports_cat ... ok
test parse_command::tests::supports_cat_sed_n ... ok
test parse_command::tests::supports_cd_and_rg_files ... ok
test parse_command::tests::supports_grep_query_with_slashes_not_shortened ... ok
test parse_command::tests::supports_grep_recursive_current_dir ... ok
test parse_command::tests::supports_grep_recursive_specific_file ... ok
test parse_command::tests::supports_grep_weird_backtick_in_query ... ok
test parse_command::tests::supports_head_n ... ok
test parse_command::tests::supports_ls_with_pipe ... ok
test parse_command::tests::supports_nl_then_sed_reading ... ok
test parse_command::tests::supports_npm_run_build_is_unknown ... ok
test parse_command::tests::supports_rg_files_then_head ... ok
test parse_command::tests::supports_rg_files_with_path_and_pipe ... ok
test parse_command::tests::supports_searching_for_navigate_to_route ... ok
test parse_command::tests::supports_sed_n ... ok
test parse_command::tests::supports_sed_n_then_nl_as_search ... ok
test parse_command::tests::supports_tail_n_last_lines ... ok
test parse_command::tests::supports_tail_n_plus ... ok
test parse_command::tests::tail_behavior ... ok
test parse_command::tests::tail_with_no_space ... ok
test parse_command::tests::trim_on_semicolon ... ok
test project_doc::tests::concatenates_root_and_cwd_docs ... ok
test project_doc::tests::doc_larger_than_limit_is_truncated ... ok
test project_doc::tests::doc_smaller_than_limit_is_returned ... ok
test project_doc::tests::finds_doc_in_repo_root ... ok
test project_doc::tests::keeps_existing_instructions_when_doc_missing ... ok
test project_doc::tests::merges_existing_instructions_with_project_doc ... ok
test project_doc::tests::no_doc_file_returns_none ... ok
test project_doc::tests::zero_byte_limit_disables_docs ... ok
test rollout::tests::test_get_conversation_contents ... ok
test git_info::tests::resolve_root_git_project_for_trust_regular_repo_returns_repo_root ... ok
test git_info::tests::test_collect_git_info_git_repository ... ok
test rollout::tests::test_list_conversations_latest_first ... ok
test safety::tests::test_request_escalated_privileges ... ok
test safety::tests::test_request_escalated_privileges_no_sandbox_fallback ... ok
test safety::tests::test_writable_roots_constraint ... ok
test seatbelt::tests::create_seatbelt_args_for_cwd_as_git_repo ... ok
test seatbelt::tests::create_seatbelt_args_with_read_only_git_subpath ... ok
test shell::macos_tests::format_default_shell_invocation_prefers_snapshot_when_available ... ok
test rollout::tests::test_stable_ordering_same_second_pagination ... ok
test rollout::tests::test_pagination_cursor ... ok
test git_info::tests::test_collect_git_info_detached_head ... ok
test shell::tests::test_run_with_profile_zshrc_not_exists ... ok
test token_data::tests::id_token_info_handles_missing_fields ... ok
test token_data::tests::id_token_info_parses_email_and_plan ... ok
test turn_diff_tracker::tests::accumulates_add_and_update ... ok
test turn_diff_tracker::tests::accumulates_delete ... ok
test turn_diff_tracker::tests::accumulates_move_and_update ... ok
test turn_diff_tracker::tests::binary_files_differ_update ... ok
test shell::macos_tests::test_snapshot_generation_uses_session_id_and_cleanup ... ok
test turn_diff_tracker::tests::filenames_with_spaces_add_and_update ... ok
test turn_diff_tracker::tests::move_declared_but_file_only_appears_at_dest_is_add ... ok
test turn_diff_tracker::tests::move_without_1change_yields_no_diff ... ok
test user_notification::tests::test_user_notification ... ok
test turn_diff_tracker::tests::update_persists_across_new_baseline_for_new_file ... ok
test git_info::tests::test_collect_git_info_with_remote ... ok
test git_info::tests::resolve_root_git_project_for_trust_detects_worktree_and_returns_main_root ... ok
test shell::tests::test_run_with_profile_bash_escaping_and_execution ... ok
test git_info::tests::test_collect_git_info_with_branch ... ok
test shell::macos_tests::test_run_with_profile_escaping_and_execution ... ok
test git_info::tests::test_get_git_working_tree_state_clean_repo ... ok
test git_info::tests::test_get_git_working_tree_state_with_changes ... ok
test git_info::tests::test_get_git_working_tree_state_unpushed_commit ... ok
test git_info::tests::test_get_git_working_tree_state_branch_fallback ... ok
test exec_command::session_manager::tests::session_manager_streams_and_truncates_from_now ... ok

test result: ok. 191 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 10.02s

Running tests/all.rs (target/debug/deps/all-ab8af179bbde8ad1)

running 40 tests
test suite::cli_stream::integration_git_info_unit_test ... ok
test suite::client::includes_conversation_id_and_model_headers_in_request ... ok
test suite::client::includes_base_instructions_override_in_request ... ok
test suite::client::chatgpt_auth_sends_correct_request ... ok
test suite::client::includes_user_instructions_message_in_request ... ok
test suite::client::history_dedupes_streamed_and_final_messages_across_turns ... ok
test suite::client::azure_overrides_assign_properties_used_for_responses_url ... ok
test suite::client::env_var_overrides_loaded_auth ... ok
test suite::exec::exit_code_0_succeeds ... ok
test suite::exec::exit_command_not_found_is_ok ... ok
test suite::exec::truncates_output_lines ... ok
test suite::exec::write_file_fails_as_sandbox_error ... ok
test suite::exec::truncates_output_bytes ... ok
test suite::exec_stream_events::test_exec_stderr_stream_events_echo ... ok
test suite::exec_stream_events::test_exec_stdout_stream_events_echo ... ok
test suite::live_cli::live_create_file_hello_txt ... ignored
test suite::live_cli::live_print_working_directory ... ignored
test suite::client::originator_config_override_is_used ... ok
test suite::exec_stream_events::test_aggregated_output_interleaves_in_order ... ok
test suite::client::prefers_apikey_when_config_prefers_apikey_even_with_chatgpt_tokens ... ok
test suite::client::resume_includes_initial_messages_and_sends_prior_items ... ok
test suite::client::prefers_chatgpt_token_when_config_prefers_chatgpt ... ok
test suite::compact::summarize_context_three_requests_and_instructions ... ok
test suite::seatbelt::danger_full_access_allows_all_writes ... ok
test suite::prompt_caching::codex_mini_latest_tools ... ok
test suite::seatbelt::if_git_repo_is_writable_root_then_dot_git_folder_is_read_only ... ok
test suite::seatbelt::if_parent_of_repo_is_writable_then_dot_git_folder_is_writable ... ok
test suite::seatbelt::read_only_forbids_all_writes ... ok
test suite::prompt_caching::overrides_turn_context_but_keeps_cached_prefix_and_key_constant ... ok
test suite::seatbelt::python_getpwuid_works_under_seatbelt ... ok
test suite::prompt_caching::per_turn_overrides_keep_cached_prefix_and_key_constant ... ok
test suite::prompt_caching::prompt_tools_are_consistent_across_requests ... ok
test suite::prompt_caching::prefixes_context_and_instructions_once_and_consistently_across_requests ... ok
test suite::fork_conversation::fork_conversation_twice_drops_to_first_message ... ok
test suite::stream_no_completed::retries_on_early_close ... ok
test suite::stream_error_allows_next_turn::continue_after_stream_error ... ok
test suite::cli_stream::exec_cli_applies_experimental_instructions_file ... ok
test suite::cli_stream::responses_api_stream_cli ... ok
test suite::cli_stream::chat_mode_stream_cli ... ok
test suite::cli_stream::integration_creates_and_checks_session_file ... ok

test result: ok. 38 passed; 0 failed; 2 ignored; 0 measured; 0 filtered out; finished in 2.34s

Running tests/chat_completions_payload.rs (target/debug/deps/chat_completions_payload-6ac89cfa8ceed86e)

running 8 tests
test skips_empty_reasoning_segments ... ok
test ignores_reasoning_before_last_user ... ok
test omits_reasoning_when_none_present ... ok
test suppresses_duplicate_assistant_messages ... ok
test attaches_reasoning_to_previous_assistant ... ok
test attaches_reasoning_to_function_call_anchor ... ok
test drops_reasoning_when_last_role_is_user ... ok
test attaches_reasoning_to_local_shell_call ... ok

test result: ok. 8 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.07s

Running tests/chat_completions_sse.rs (target/debug/deps/chat_completions_sse-1b72d67b0191d652)

running 5 tests
test streams_reasoning_from_final_message ... ok
test streams_reasoning_before_tool_call ... ok
test streams_text_without_reasoning ... ok
test streams_reasoning_from_string_delta ... ok
test streams_reasoning_from_object_delta ... ok

test result: ok. 5 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.05s

Running unittests src/lib.rs (target/debug/deps/codex_exec-2e4a4112e8fa1ab7)

running 0 tests

test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s

Running unittests src/main.rs (target/debug/deps/codex_exec-0c2f76529f086135)

running 0 tests

test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s

Running tests/all.rs (target/debug/deps/all-616619292f2c5603)

running 5 tests
python3: warning: confstr() failed with code 5: couldn't get path of DARWIN_USER_TEMP_DIR; using /tmp instead
test suite::sandbox::allow_unix_socketpair_recvfrom ... ok
Traceback (most recent call last):
File "<string>", line 1, in <module>
File "/Library/Developer/CommandLineTools/Library/Frameworks/Python3.framework/Versions/3.9/lib/python3.9/multiprocessing/spawn.py", line 116, in spawn_main
exitcode = _main(fd, parent_sentinel)
File "/Library/Developer/CommandLineTools/Library/Frameworks/Python3.framework/Versions/3.9/lib/python3.9/multiprocessing/spawn.py", line 126, in _main
self = reduction.pickle.load(from_parent)
AttributeError: Can't get attribute 'f' on <module '__main__' (built-in)>
test suite::sandbox::python_multiprocessing_lock_works_under_sandbox ... ok
test suite::apply_patch::test_standalone_exec_cli_can_use_apply_patch ... ok
test suite::apply_patch::test_apply_patch_freeform_tool ... ok
test suite::apply_patch::test_apply_patch_tool ... ok

test result: ok. 5 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.54s

Running unittests src/lib.rs (target/debug/deps/codex_execpolicy-804fe3bdad411e23)

running 1 test
test execv_checker::tests::test_check_valid_input_files ... ok

test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.01s

Running unittests src/main.rs (target/debug/deps/codex_execpolicy-9cfc04181cb0691e)

running 0 tests

test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s

Running tests/all.rs (target/debug/deps/all-a3820a85c15bb961)

running 32 tests
test suite::head::test_head_no_args ... ok
test suite::cp::test_cp_no_args ... ok
test suite::cp::test_cp_one_file ... ok
test suite::head::test_head_one_file_no_flags ... ok
test suite::head::test_head_invalid_n_as_nonint_float ... ok
test suite::good::verify_everything_in_good_list_is_allowed ... ok
test suite::bad::verify_everything_in_bad_list_is_rejected ... ok
test suite::head::test_head_invalid_n_as_0 ... ok
test suite::literal::test_invalid_subcommand ... ok
test suite::cp::test_cp_multiple_files ... ok
test suite::cp::test_cp_one_arg ... ok
test suite::head::test_head_invalid_n_as_negative_int ... ok
test suite::head::test_head_invalid_n_as_float ... ok
test suite::parse_sed_command::parses_simple_print_command ... ok
test suite::parse_sed_command::rejects_malformed_print_command ... ok
test suite::head::test_head_one_flag_one_file ... ok
test suite::ls::test_flags_after_file_args ... ok
test suite::ls::test_ls_dash_z ... ok
test suite::ls::test_ls_multiple_file_args ... ok
test suite::ls::test_ls_dash_a_dash_l ... ok
test suite::pwd::test_pwd_capital_p ... ok
test suite::ls::test_ls_no_args ... ok
test suite::ls::test_ls_one_file_arg ... ok
test suite::pwd::test_pwd_capital_l ... ok
test suite::pwd::test_pwd_extra_args ... ok
test suite::ls::test_ls_multiple_flags_and_file_args ... ok
test suite::ls::test_ls_dash_al ... ok
test suite::sed::test_sed_print_specific_lines ... ok
test suite::sed::test_sed_print_specific_lines_with_e_flag ... ok
test suite::sed::test_sed_reject_dangerous_command ... ok
test suite::pwd::test_pwd_no_args ... ok
test suite::sed::test_sed_verify_e_or_pattern_is_required ... ok

test result: ok. 32 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.03s

Running unittests src/lib.rs (target/debug/deps/codex_file_search-1455ef1d750322e7)

running 2 tests
test tests::tie_breakers_sort_by_path_when_scores_equal ... ok
test tests::verify_score_is_none_for_non_match ... ok

test result: ok. 2 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s

Running unittests src/main.rs (target/debug/deps/codex_file_search-27235443370a4029)

running 0 tests

test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s

Running unittests src/lib.rs (target/debug/deps/codex_linux_sandbox-175947f899161841)

running 0 tests

test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s

Running unittests src/main.rs (target/debug/deps/codex_linux_sandbox-92a16cb2baab6076)

running 0 tests

test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s

Running tests/all.rs (target/debug/deps/all-40e5087be9e07e51)

running 0 tests

test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s

Running unittests src/lib.rs (target/debug/deps/codex_login-bb7a63d1ddf6a350)

running 0 tests

test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s

Running tests/all.rs (target/debug/deps/all-900cb27475f8567b)

running 3 tests
test suite::login_server_e2e::end_to_end_login_flow_persists_auth_json ... ok
test suite::login_server_e2e::creates_missing_codex_home_dir ... ok
test suite::login_server_e2e::cancels_previous_login_server_when_port_is_in_use ... ok

test result: ok. 3 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.31s

Running unittests src/lib.rs (target/debug/deps/codex_mcp_client-8ae608a5ba378f34)

running 1 test
test mcp_client::tests::test_create_env_for_mcp_server ... ok

test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s

Running unittests src/main.rs (target/debug/deps/codex_mcp_client-bbc56c9975727bb7)

running 0 tests

test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s

Running unittests src/lib.rs (target/debug/deps/codex_mcp_server-e58f8f0f8b7dabc7)

running 12 tests
test json_to_toml::tests::json_bool_to_toml ... ok
test json_to_toml::tests::json_array_to_toml ... ok
test json_to_toml::tests::json_float_to_toml ... ok
test json_to_toml::tests::json_null_to_toml ... ok
test json_to_toml::tests::json_number_to_toml ... ok
test codex_tool_config::tests::verify_codex_tool_reply_json_schema ... ok
test json_to_toml::tests::json_object_nested ... ok
test outgoing_message::tests::verify_server_notification_serialization ... ok
test codex_message_processor::tests::extract_conversation_summary_prefers_plain_user_messages ... ok
test codex_tool_config::tests::verify_codex_tool_json_schema ... ok
test outgoing_message::tests::test_send_event_as_notification_with_meta ... ok
test outgoing_message::tests::test_send_event_as_notification ... ok

test result: ok. 12 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s

Running unittests src/main.rs (target/debug/deps/codex_mcp_server-8374c142f1047bf1)

running 0 tests

test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s

Running tests/all.rs (target/debug/deps/all-c791d23ae2d93094)

running 18 tests
test suite::auth::get_auth_status_with_api_key ... ok
test suite::config::get_config_toml_empty ... ok
test suite::auth::get_auth_status_with_api_key_no_include_token ... ok
test suite::auth::get_auth_status_no_auth ... ok
test suite::config::get_config_toml_parses_all_fields ... ok
test suite::send_message::test_send_message_session_not_found ... ok
test suite::login::logout_chatgpt_removes_auth ... ok
test suite::user_agent::get_user_agent_returns_current_codex_user_agent ... ok
test suite::codex_message_processor_flow::test_codex_jsonrpc_conversation_flow ... ok
test suite::codex_tool::test_codex_tool_passes_base_instructions ... ok
test suite::codex_tool::test_shell_command_approval_triggers_elicitation ... ok
test suite::list_resume::test_list_and_resume_conversations ... ok
test suite::send_message::test_send_message_success ... ok
test suite::create_conversation::test_conversation_create_and_send_message_ok ... ok
test suite::codex_tool::test_patch_approval_triggers_elicitation ... ok
test suite::codex_message_processor_flow::test_send_user_turn_changes_approval_policy_behavior ... ok
test suite::interrupt::test_shell_command_interruption ... ok
test suite::login::login_and_cancel_chatgpt ... ok

test result: ok. 18 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 2.51s

Running unittests src/lib.rs (target/debug/deps/codex_ollama-35239be9ac602550)

running 7 tests
test url::tests::test_base_url_to_host_root ... ok
test parser::tests::test_pull_events_decoder_progress ... ok
test parser::tests::test_pull_events_decoder_status_and_success ... ok
test client::tests::test_try_from_oss_provider_err_when_server_missing ... ok
test client::tests::test_try_from_oss_provider_ok_when_server_running ... ok
test client::tests::test_fetch_models_happy_path ... ok
test client::tests::test_probe_server_happy_path_openai_compat_and_native ... ok

test result: ok. 7 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.06s

Running unittests src/lib.rs (target/debug/deps/codex_protocol-2e80a8d8ebae9886)

running 8 tests
test models::tests::deserialize_shell_tool_call_params ... ok
test models::tests::serializes_failure_as_string ... ok
test models::tests::serializes_success_as_plain_string ... ok
test protocol::tests::serialize_event ... ok
test mcp_protocol::tests::test_conversation_id_default_is_not_zeroes ... ok
test protocol::tests::vec_u8_as_base64_serialization_and_deserialization ... ok
test mcp_protocol::tests::serialize_new_conversation ... ok
test num_format::tests::kmg ... ok

test result: ok. 8 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.05s

Running unittests src/lib.rs (target/debug/deps/codex_protocol_ts-dec745a558949593)

running 0 tests

test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s

Running unittests src/main.rs (target/debug/deps/codex_protocol_ts-b9406dc3e7b4697a)

running 0 tests

test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s

Running unittests src/lib.rs (target/debug/deps/codex_tui-63c4fdaf2bd23315)

running 237 tests
test backtrack_helpers::tests::normalize_returns_zero_when_no_user_messages ... ok
test backtrack_helpers::tests::normalize_keeps_valid_n ... ok
test backtrack_helpers::tests::normalize_wraps_to_one_when_past_oldest ... ok
test bottom_pane::chat_composer::tests::edit_clears_pending_paste ... ok
test bottom_pane::chat_composer::tests::handle_paste_large_uses_placeholder_and_replaces_on_submit ... ok
test bottom_pane::chat_composer::tests::attach_image_without_text_submits_empty_text_and_images ... ok
test bottom_pane::chat_composer::tests::empty_enter_returns_none ... ok
test bottom_pane::chat_composer::tests::deleting_one_of_duplicate_image_placeholders_removes_matching_entry ... ok
test bottom_pane::chat_composer::tests::backspace_with_multibyte_text_before_placeholder_does_not_panic ... ok
test bottom_pane::chat_composer::tests::handle_paste_small_inserts_text ... ok
test bottom_pane::chat_composer::tests::attach_image_and_submit_includes_image_paths ... ok
test bottom_pane::chat_composer::tests::image_placeholder_backspace_behaves_like_text_placeholder ... ok
test bottom_pane::approval_modal_view::tests::ctrl_c_aborts_and_clears_queue ... ok
test bottom_pane::chat_composer::tests::test_current_at_token_basic_cases ... ok
test bottom_pane::chat_composer::tests::test_current_at_token_cursor_positions ... ok
test bottom_pane::chat_composer::tests::test_current_at_token_whitespace_boundaries ... ok
test bottom_pane::chat_composer::tests::test_multiple_pastes_submission ... ok
test bottom_pane::chat_composer::tests::test_partial_placeholder_deletion ... ok
test bottom_pane::chat_composer::tests::test_placeholder_deletion ... ok
test bottom_pane::chat_composer_history::tests::duplicate_submissions_are_not_recorded ... ok
test bottom_pane::chat_composer_history::tests::navigation_with_async_fetch ... ok
test bottom_pane::command_popup::tests::filter_includes_init_when_typing_prefix ... ok
test bottom_pane::chat_composer::tests::pasting_filepath_attaches_image ... ok
test bottom_pane::command_popup::tests::model_is_first_suggestion_for_mo ... ok
test bottom_pane::command_popup::tests::prompt_discovery_lists_custom_prompts ... ok
test bottom_pane::command_popup::tests::prompt_name_collision_with_builtin_is_ignored ... ok
test bottom_pane::scroll_state::tests::wrap_navigation_and_visibility ... ok
test bottom_pane::command_popup::tests::selecting_init_by_exact_match ... ok
test bottom_pane::tests::bottom_padding_present_with_status_above_composer ... ok
test bottom_pane::tests::bottom_padding_shrinks_when_tiny ... ok
test bottom_pane::tests::ctrl_c_on_modal_consumes_and_shows_quit_hint ... ok
test bottom_pane::tests::overlay_not_shown_above_approval_modal ... ok
test bottom_pane::tests::status_indicator_visible_during_command_execution ... ok
test bottom_pane::textarea::tests::control_b_and_f_move_cursor ... ok
test bottom_pane::textarea::tests::control_b_f_fallback_control_chars_move_cursor ... ok
test bottom_pane::textarea::tests::control_h_backspace ... ok
test bottom_pane::textarea::tests::cursor_left_and_right_handle_graphemes ... ok
test bottom_pane::textarea::tests::cursor_pos_with_state_after_movements ... ok
test bottom_pane::textarea::tests::cursor_pos_with_state_basic_and_scroll_behaviors ... ok
test bottom_pane::textarea::tests::cursor_vertical_movement_across_lines_and_bounds ... ok
test bottom_pane::textarea::tests::delete_backward_and_forward_edges ... ok
test bottom_pane::textarea::tests::delete_backward_word_alt_keys ... ok
test bottom_pane::textarea::tests::delete_backward_word_and_kill_line_variants ... ok
test bottom_pane::textarea::tests::end_of_line_or_down_at_end_of_text ... ok
test bottom_pane::chat_composer::tests::burst_paste_fast_small_buffers_and_flushes_on_stop ... ok
test bottom_pane::textarea::tests::home_end_and_emacs_style_home_end ... ok
test bottom_pane::textarea::tests::insert_and_replace_update_cursor_and_text ... ok
test bottom_pane::textarea::tests::word_navigation_helpers ... ok
test bottom_pane::textarea::tests::wrapped_navigation_across_visual_lines ... ok
test bottom_pane::textarea::tests::wrapped_navigation_with_newlines_and_spaces ... ok
test bottom_pane::chat_composer::tests::burst_paste_fast_large_inserts_placeholder_on_flush ... ok
test bottom_pane::textarea::tests::wrapped_navigation_with_wide_graphemes ... ok
test bottom_pane::textarea::tests::wrapping_and_cursor_positions ... ok
test chatwidget::tests::alt_up_edits_most_recent_queued_message ... ok
test chatwidget::tests::apply_patch_approval_sends_op_with_submission_id ... ok
test chatwidget::tests::apply_patch_events_emit_history_cells ... ok
test chatwidget::tests::apply_patch_full_flow_integration_like ... ok
test chatwidget::tests::apply_patch_manual_approval_adjusts_header ... ok
test chatwidget::tests::apply_patch_request_shows_diff_summary ... ok
test chatwidget::tests::apply_patch_untrusted_shows_approval_modal ... ok
test bottom_pane::chat_composer::tests::slash_tab_completion_moves_cursor_to_end ... ok
test chatwidget::tests::approval_modal_exec_snapshot ... ok
test chatwidget::tests::approval_modal_exec_without_reason_snapshot ... ok
test chatwidget::tests::apply_patch_manual_flow_snapshot ... ok
test bottom_pane::chat_composer::tests::ui_snapshots ... ok
test chatwidget::tests::deltas_then_same_final_message_are_rendered_snapshot ... ok
test chatwidget::tests::disabled_slash_command_while_task_running_snapshot ... ok
test chatwidget::tests::approval_modal_patch_snapshot ... ok
test chatwidget::tests::empty_enter_during_task_does_not_queue ... ok
test chatwidget::tests::exec_approval_emits_proposed_command_and_decision_history ... ok
test chatwidget::tests::exec_history_cell_shows_working_then_completed ... ok
test chatwidget::tests::exec_approval_decision_truncates_multiline_and_long_commands ... ok
test chatwidget::tests::chatwidget_exec_and_status_layout_vt100_snapshot ... ok
test chatwidget::tests::exec_history_cell_shows_working_then_failed ... ok
test chatwidget::tests::final_reasoning_then_message_without_deltas_are_rendered ... ok
test chatwidget::tests::helpers_are_available_and_do_not_panic ... ignored, system configuration APIs are blocked under macOS seatbelt
test chatwidget::tests::interrupt_exec_marks_failed_snapshot ... ok
test chatwidget::tests::interrupt_restores_queued_messages_into_composer ... ok
test chatwidget::tests::multiple_agent_messages_in_single_turn_emit_multiple_headers ... ok
test chatwidget::tests::plan_update_renders_history_cell ... ok
test chatwidget::tests::exec_history_extends_previous_when_consecutive ... ok
test chatwidget::tests::resumed_initial_messages_render_history ... ok
test chatwidget::tests::status_widget_active_snapshot ... ok
test chatwidget::tests::stream_error_is_rendered_to_history ... ok
test chatwidget::tests::final_answer_without_newline_is_flushed_immediately ... ok
test chatwidget::tests::status_widget_and_approval_modal_snapshot ... ok
test clipboard_paste::pasted_paths_tests::normalize_file_url ... ok
test clipboard_paste::pasted_paths_tests::normalize_file_url_windows ... ok
test clipboard_paste::pasted_paths_tests::normalize_multiple_tokens_returns_none ... ok
test clipboard_paste::pasted_paths_tests::normalize_shell_escaped_single_path ... ok
test clipboard_paste::pasted_paths_tests::normalize_simple_quoted_path_fallback ... ok
test clipboard_paste::pasted_paths_tests::normalize_single_quoted_unix_path ... ok
test clipboard_paste::pasted_paths_tests::normalize_single_quoted_windows_path ... ok
test clipboard_paste::pasted_paths_tests::normalize_unc_windows_path ... ok
test clipboard_paste::pasted_paths_tests::normalize_unquoted_windows_path_with_spaces ... ok
test clipboard_paste::pasted_paths_tests::pasted_image_format_png_jpeg_unknown ... ok
test clipboard_paste::pasted_paths_tests::pasted_image_format_with_windows_style_paths ... ok
test diff_render::tests::ui_snapshot_add_details ... ok
test diff_render::tests::ui_snapshot_apply_add_block ... ok
test diff_render::tests::ui_snapshot_apply_delete_block ... ok
test chatwidget::tests::ui_snapshots_small_heights_idle ... ok
test diff_render::tests::ui_snapshot_apply_multiple_files_block ... ok
test chatwidget::tests::ui_snapshots_small_heights_task_running ... ok
test bottom_pane::chat_composer::tests::slash_popup_model_first_for_mo_logic ... ok
test diff_render::tests::ui_snapshot_apply_update_block_wraps_long_lines_text ... ok
test diff_render::tests::ui_snapshot_apply_update_block_relativizes_path ... ok
test diff_render::tests::ui_snapshot_apply_update_block_wraps_long_lines ... ok
test diff_render::tests::ui_snapshot_apply_update_block ... ok
test diff_render::tests::ui_snapshot_blank_context_line ... ok
test diff_render::tests::ui_snapshot_apply_update_with_rename_block ... ok
test diff_render::tests::ui_snapshot_single_line_replacement_counts ... ok
test exec_command::tests::test_escape_command ... ok
test exec_command::tests::test_strip_bash_lc_and_escape ... ok
test history_cell::tests::coalesced_reads_dedupe_names ... ok
test diff_render::tests::ui_snapshot_update_details_with_rename ... ok
test diff_render::tests::ui_snapshot_wrap_behavior_insert ... ok
test history_cell::tests::coalesces_reads_across_multiple_calls ... ok
test history_cell::tests::coalesces_sequential_reads_within_one_call ... ok
test history_cell::tests::multiline_command_without_wrap_uses_branch_then_eight_spaces ... ok
test history_cell::tests::multiline_command_both_lines_wrap_with_correct_prefixes ... ok
test diff_render::tests::ui_snapshot_vertical_ellipsis_between_hunks ... ok
test history_cell::tests::plan_update_without_note_snapshot ... ok
test history_cell::tests::multiline_command_wraps_with_extra_indent_on_subsequent_lines ... ok
test history_cell::tests::reasoning_summary_block_falls_back_when_header_is_missing ... ok
test history_cell::tests::plan_update_with_note_and_wrapping_snapshot ... ok
test history_cell::tests::reasoning_summary_block_falls_back_when_summary_is_missing ... ok
test history_cell::tests::reasoning_summary_block_returns_reasoning_cell_when_feature_disabled ... ok
test history_cell::tests::reasoning_summary_block_splits_header_and_summary_when_present ... ok
test history_cell::tests::ran_cell_multiline_with_stderr_snapshot ... ok
test history_cell::tests::single_line_command_compact_when_fits ... ok
test insert_history::tests::writes_bold_then_regular_spans ... ok
test history_cell::tests::single_line_command_wraps_with_four_space_continuation ... ok
test live_wrap::tests::newline_splits_rows ... ok
test live_wrap::tests::fragmentation_invariance_long_token ... ok
test history_cell::tests::user_history_cell_wraps_and_prefixes_each_line_snapshot ... ok
test live_wrap::tests::rows_do_not_exceed_width_ascii ... ok
test history_cell::tests::stderr_tail_more_than_five_lines_snapshot ... ok
test live_wrap::tests::rows_do_not_exceed_width_emoji_cjk ... ok
test live_wrap::tests::rewrap_on_width_change ... ok
test markdown::tests::append_markdown_matches_tui_markdown_for_ordered_item ... ok
test markdown::tests::append_markdown_keeps_ordered_list_line_unsplit_in_context ... ok
test markdown::tests::append_markdown_preserves_full_text_line ... ok
test markdown::tests::citation_followed_by_space_so_they_do_not_run_together ... ok
test markdown::tests::citation_is_rewritten_with_absolute_path ... ok
test markdown::tests::citation_is_rewritten_with_relative_path ... ok
test markdown::tests::citation_unchanged_without_file_opener ... ok
test markdown::tests::citations_not_rewritten_inside_code_blocks ... ok
test markdown::tests::indented_code_blocks_preserve_leading_whitespace ... ok
test markdown::tests::citations_not_rewritten_inside_indented_code_blocks ... ok
test markdown::tests::fenced_code_blocks_preserve_leading_whitespace ... ok
test markdown::tests::split_text_and_fences_keeps_ordered_list_line_as_text ... ok
test markdown::tests::tui_markdown_shape_for_loose_tight_section ... ok
test markdown::tests::tui_markdown_splits_ordered_marker_and_text ... ok
test bottom_pane::chat_composer::tests::slash_popup_model_first_for_mo_ui ... ok
test markdown_stream::tests::empty_fenced_block_is_dropped_and_separator_preserved_before_heading ... ok
test markdown_stream::tests::finalize_commits_partial_line ... ok
test markdown_stream::tests::fuzz_class_bare_dash_then_task_item ... ok
test markdown_stream::tests::fuzz_class_bullet_duplication_variant_2 ... ok
test markdown_stream::tests::fuzz_class_bullet_duplication_variant_1 ... ok
test markdown_stream::tests::heading_not_inlined_when_split_across_chunks ... ok
test markdown_stream::tests::fuzz_class_ordered_list_split_weirdness ... ok
test markdown_stream::tests::loose_list_with_split_dashes_matches_full_render ... ok
test markdown_stream::tests::heading_starts_on_new_line_when_following_paragraph ... ok
test markdown_stream::tests::lists_and_fences_commit_without_duplication ... ok
test pager_overlay::tests::edit_prev_hint_is_visible ... ok
test markdown_stream::tests::no_commit_until_newline ... ok
test pager_overlay::tests::pager_wrap_cache_invalidates_on_append ... ok
test markdown_stream::tests::paragraph_then_empty_fence_then_heading_keeps_heading_on_new_line ... ok
test markdown_stream::tests::utf8_boundary_safety_and_wide_chars ... ok
test pager_overlay::tests::pager_wrap_cache_reuses_for_same_width_and_rebuilds_on_change ... ok
test pager_overlay::tests::transcript_overlay_keeps_scroll_pinned_at_bottom ... ok
test pager_overlay::tests::transcript_overlay_preserves_manual_scroll_position ... ok
test pager_overlay::tests::static_overlay_snapshot_basic ... ok
test render::highlight::tests::dims_expected_bash_operators ... ok
test render::highlight::tests::does_not_dim_quotes_but_dims_other_punct ... ok
test status_indicator_widget::tests::fmt_elapsed_compact_formats_seconds_minutes_hours ... ok
test resume_picker::tests::preview_uses_first_message_input_text ... ok
test resume_picker::tests::to_rows_sorts_descending_by_timestamp ... ok
test markdown_stream::tests::loose_vs_tight_list_items_streaming_matches_full ... ok
test status_indicator_widget::tests::timer_pauses_when_requested ... ok
test pager_overlay::tests::transcript_overlay_snapshot_basic ... ok
test status_indicator_widget::tests::renders_truncated ... ok
test tests::hides_login_when_api_key_and_prefers_api_key ... ok
test tests::hides_login_when_chatgpt_and_prefers_chatgpt ... ok
test status_indicator_widget::tests::renders_with_working_header ... ok
test tests::shows_login_when_api_key_but_prefers_chatgpt ... ok
test tests::shows_login_when_not_authenticated ... ok
test text_formatting::tests::test_format_json_compact_already_compact ... ok
test text_formatting::tests::test_format_json_compact_array ... ok
test text_formatting::tests::test_format_json_compact_empty_array ... ok
test text_formatting::tests::test_format_json_compact_empty_object ... ok
test text_formatting::tests::test_format_json_compact_invalid_json ... ok
test text_formatting::tests::test_format_json_compact_nested_object ... ok
test status_indicator_widget::tests::renders_with_queued_messages ... ok
test text_formatting::tests::test_format_json_compact_primitive_values ... ok
test text_formatting::tests::test_format_json_compact_simple_object ... ok
test text_formatting::tests::test_format_json_compact_with_whitespace ... ok
test text_formatting::tests::test_truncate_emoji ... ok
test text_formatting::tests::test_truncate_empty_string ... ok
test text_formatting::tests::test_truncate_max_graphemes_one ... ok
test text_formatting::tests::test_truncate_max_graphemes_three_boundary ... ok
test text_formatting::tests::test_truncate_max_graphemes_two ... ok
test text_formatting::tests::test_truncate_max_graphemes_zero ... ok
test text_formatting::tests::test_truncate_text ... ok
test text_formatting::tests::test_truncate_text_exact_length ... ok
test text_formatting::tests::test_truncate_text_shorter_than_limit ... ok
test text_formatting::tests::test_truncate_unicode_combining_characters ... ok
test text_formatting::tests::test_truncate_very_long_text ... ok
test user_approval_widget::tests::lowercase_shortcut_is_accepted ... ok
test user_approval_widget::tests::uppercase_shortcut_is_accepted ... ok
test wrapping::tests::break_words_false_allows_overflow_for_long_word ... ok
test wrapping::tests::empty_input_yields_single_empty_line ... ok
test wrapping::tests::empty_initial_indent_subsequent_spaces ... ok
test wrapping::tests::hyphen_splitter_breaks_at_hyphen ... ok
test wrapping::tests::indent_consumes_width_leaving_one_char_space ... ok
test wrapping::tests::leading_spaces_preserved_on_first_line ... ok
test wrapping::tests::multiple_spaces_between_words_dont_start_next_line_with_spaces ... ok
test wrapping::tests::line_height_counts_double_width_emoji ... ok
test wrapping::tests::simple_styled_wrap_preserves_styles ... ok
test wrapping::tests::simple_unstyled_wrap_narrow_width ... ok
test wrapping::tests::styled_split_within_span_preserves_style ... ok
test wrapping::tests::trivial_unstyled_no_indents_wide_width ... ok
test wrapping::tests::wide_unicode_wraps_by_display_width ... ok
test wrapping::tests::with_initial_and_subsequent_indents ... ok
test wrapping::tests::wrap_lines_applies_initial_indent_only_once ... ok
test wrapping::tests::wrap_lines_borrowed_applies_initial_indent_only_once ... ok
test wrapping::tests::wrap_lines_borrowed_without_indents_is_concat_of_single_wraps ... ok
test wrapping::tests::wrap_lines_without_indents_is_concat_of_single_wraps ... ok
test wrapping::tests::word_wrap_does_not_split_words_simple_english ... ok
test streaming::controller::tests::controller_loose_vs_tight_with_commit_ticks_matches_full ... ok
test bottom_pane::chat_composer::tests::slash_init_dispatches_command_and_does_not_submit_literal_text ... ok
test bottom_pane::chat_composer::tests::slash_mention_dispatches_command_and_inserts_at ... ok
test bottom_pane::chat_composer::tests::selecting_custom_prompt_submits_file_contents ... ok
test bottom_pane::tests::composer_shown_after_denied_while_task_running ... ok
test chatwidget::tests::binary_size_transcript_snapshot ... ok
test bottom_pane::textarea::tests::fuzz_textarea_randomized ... ok
test bottom_pane::chat_composer::tests::humanlike_typing_1000_chars_appears_live_no_placeholder ... ok

test result: ok. 236 passed; 0 failed; 1 ignored; 0 measured; 0 filtered out; finished in 10.86s

Running unittests src/main.rs (target/debug/deps/codex_tui-f521a805b15f1978)

running 0 tests

test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s

Running tests/all.rs (target/debug/deps/all-62b03ca1f2d02f27)

running 11 tests
test suite::status_indicator::ansi_escape_line_strips_escape_sequences ... ok
test suite::statusengine_snapshots::test_desired_height_without_statusengine ... ok
test suite::statusengine_snapshots::test_desired_height_with_statusengine ... ok
test suite::statusengine_snapshots::test_statusengine_chatcomposer_integration ... ok
test suite::statusengine_snapshots::test_statusengine_lines_rendering_narrow_width ... ok
test suite::statusengine_snapshots::test_statusengine_lines_rendering_wide_width ... ok
test suite::statusengine_snapshots::test_statusengine_lines_rendering_medium_width ... ok
test suite::statusengine_snapshots::test_statusengine_line2_only ... ok
test suite::statusengine_snapshots::test_statusengine_ellipsis_truncation ... ok
test suite::statusengine_snapshots::test_statusengine_disabled ... ok
test suite::statusengine_snapshots::test_statusengine_truncation_behavior ... ok

test result: ok. 11 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.04s

Running tests/statusengine_test.rs (target/debug/deps/statusengine_test-25824a5e6171ea19)

running 4 tests
test test_statusengine_creation ... ok
test test_truncate_with_ellipsis ... ok
test test_line2_building ... ok
test test_command_throttling ... ok

test result: ok. 4 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s

Running unittests lib.rs (target/debug/deps/core_test_support-f9cc8bf56a64c39d)

running 0 tests

test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s

Running unittests src/lib.rs (target/debug/deps/mcp_types-aa0e88eb7b48d486)

running 0 tests

test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s

Running tests/all.rs (target/debug/deps/all-0806a4e9e8ed587f)

running 2 tests
test suite::initialize::deserialize_initialize_request ... ok
test suite::progress_notification::deserialize_progress_notification ... ok

test result: ok. 2 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s

Running unittests lib.rs (target/debug/deps/mcp_test_support-b4fd21e8c054b804)

running 0 tests

test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s

Doc-tests codex_ansi_escape

running 0 tests

test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s

Doc-tests codex_apply_patch

running 0 tests

test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s

Doc-tests codex_arg0

running 0 tests

test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s

Doc-tests codex_chatgpt

running 0 tests

test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s

Doc-tests codex_cli

running 0 tests

test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s

Doc-tests codex_common

running 0 tests

test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s

Doc-tests codex_exec

running 0 tests

test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s

Doc-tests codex_execpolicy

running 0 tests

test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s

Doc-tests codex_file_search

running 0 tests

test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s

Doc-tests codex_linux_sandbox

running 0 tests

test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s

Doc-tests codex_login

running 0 tests

test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s

Doc-tests codex_mcp_client

running 0 tests

test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s

Doc-tests codex_mcp_server

running 0 tests

test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s

Doc-tests codex_ollama

running 0 tests

test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s

Doc-tests codex_protocol

running 0 tests

test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s

Doc-tests codex_protocol_ts

running 0 tests

test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s

Doc-tests codex_tui

running 0 tests

test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s

Doc-tests core_test_support

running 0 tests

test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s

Doc-tests mcp_types

running 0 tests

test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s

Doc-tests mcp_test_support

running 0 tests

test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s

Checking mcp-types v0.0.0 (/Users/ouzy/Documents/DevProjects/codex/codex-rs/mcp-types)
Checking codex-apply-patch v0.0.0 (/Users/ouzy/Documents/DevProjects/codex/codex-rs/apply-patch)
Checking codex-protocol v0.0.0 (/Users/ouzy/Documents/DevProjects/codex/codex-rs/protocol)
Checking codex-mcp-client v0.0.0 (/Users/ouzy/Documents/DevProjects/codex/codex-rs/mcp-client)
Checking codex-core v0.0.0 (/Users/ouzy/Documents/DevProjects/codex/codex-rs/core)
Checking codex-protocol-ts v0.0.0 (/Users/ouzy/Documents/DevProjects/codex/codex-rs/protocol-ts)
Checking codex-common v0.0.0 (/Users/ouzy/Documents/DevProjects/codex/codex-rs/common)
Checking codex-arg0 v0.0.0 (/Users/ouzy/Documents/DevProjects/codex/codex-rs/arg0)
Checking codex-login v0.0.0 (/Users/ouzy/Documents/DevProjects/codex/codex-rs/login)
Checking codex-ollama v0.0.0 (/Users/ouzy/Documents/DevProjects/codex/codex-rs/ollama)
Checking core_test_support v0.0.0 (/Users/ouzy/Documents/DevProjects/codex/codex-rs/core/tests/common)
Checking codex-chatgpt v0.0.0 (/Users/ouzy/Documents/DevProjects/codex/codex-rs/chatgpt)
Checking codex-mcp-server v0.0.0 (/Users/ouzy/Documents/DevProjects/codex/codex-rs/mcp-server)
Checking codex-tui v0.0.0 (/Users/ouzy/Documents/DevProjects/codex/codex-rs/tui)
Checking codex-exec v0.0.0 (/Users/ouzy/Documents/DevProjects/codex/codex-rs/exec)
Checking mcp_test_support v0.0.0 (/Users/ouzy/Documents/DevProjects/codex/codex-rs/mcp-server/tests/common)
warning: this import is redundant
--> tui/src/app.rs:36:1
|
36 | use tracing;
| ^^^^^^^^^^^^ help: remove it entirely
|
= help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_component_path_imports
= note: #[warn(clippy::single_component_path_imports)] on by default

warning: using clone on type ReasoningEffort which implements the Copy trait
--> tui/src/app.rs:349:55
|
349 | self.chat_widget.set_reasoning_effort(effort.clone());
| ^^^^^^^^^^^^^^ help: try removing the clone call: effort
|
= help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy
= note: #[warn(clippy::clone_on_copy)] on by default

warning: using clone on type AskForApproval which implements the Copy trait
--> tui/src/app.rs:369:54
|
369 | self.chat_widget.set_approval_policy(policy.clone());
| ^^^^^^^^^^^^^^ help: try removing the clone call: policy
|
= help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy

warning: codex-tui (lib) generated 3 warnings (run cargo clippy --fix --lib -p codex-tui to apply 3 suggestions)
Checking codex-cli v0.0.0 (/Users/ouzy/Documents/DevProjects/codex/codex-rs/cli)
warning: codex-tui (lib test) generated 3 warnings (3 duplicates)
warning: field assignment outside of initializer for an instance created with Default::default()
--> tui/tests/statusengine_test.rs:21:5
|
21 | state.model = Some("gpt-4o-mini".to_string());
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
note: consider initializing the variable with codex_tui::statusengine::StatusEngineState { model: Some("gpt-4o-mini".to_string()), effort: Some("medium".to_string()), workspace_name: Some("codex".to_string()), ..Default::default() } and removing relevant reassignments
--> tui/tests/statusengine_test.rs:20:5
|
20 | let mut state = StatusEngineState::default();
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
= help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#field_reassign_with_default
= note: #[warn(clippy::field_reassign_with_default)] on by default

warning: codex-tui (test "statusengine_test") generated 1 warning
Finished dev profile [unoptimized + debuginfo] target(s) in 9.58s
Warning: can't set imports_granularity = Item, unstable features are only available in nightly channel.
Warning: can't set imports_granularity = Item, unstable features are only available in nightly channel.
Warning: can't set imports_granularity = Item, unstable features are only available in nightly channel.
Warning: can't set imports_granularity = Item, unstable features are only available in nightly channel.
Warning: can't set imports_granularity = Item, unstable features are only available in nightly channel.
Warning: can't set imports_granularity = Item, unstable features are only available in nightly channel.
Warning: can't set imports_granularity = Item, unstable features are only available in nightly channel.
Warning: can't set imports_granularity = Item, unstable features are only available in nightly channel.
Warning: can't set imports_granularity = Item, unstable features are only available in nightly channel.
Warning: can't set imports_granularity = Item, unstable features are only available in nightly channel.
Warning: can't set imports_granularity = Item, unstable features are only available in nightly channel.
Warning: can't set imports_granularity = Item, unstable features are only available in nightly channel.
Warning: can't set imports_granularity = Item, unstable features are only available in nightly channel.
Warning: can't set imports_granularity = Item, unstable features are only available in nightly channel.
Warning: can't set imports_granularity = Item, unstable features are only available in nightly channel.
Warning: can't set imports_granularity = Item, unstable features are only available in nightly channel.
Warning: can't set imports_granularity = Item, unstable features are only available in nightly channel.
Warning: can't set imports_granularity = Item, unstable features are only available in nightly channel.
Warning: can't set imports_granularity = Item, unstable features are only available in nightly channel.
Warning: can't set imports_granularity = Item, unstable features are only available in nightly channel.
Warning: can't set imports_granularity = Item, unstable features are only available in nightly channel.
Warning: can't set imports_granularity = Item, unstable features are only available in nightly channel.
Warning: can't set imports_granularity = Item, unstable features are only available in nightly channel.
Warning: can't set imports_granularity = Item, unstable features are only available in nightly channel.
Warning: can't set imports_granularity = Item, unstable features are only available in nightly channel.
Warning: can't set imports_granularity = Item, unstable features are only available in nightly channel.
Warning: can't set imports_granularity = Item, unstable features are only available in nightly channel.
Warning: can't set imports_granularity = Item, unstable features are only available in nightly channel.
Warning: can't set imports_granularity = Item, unstable features are only available in nightly channel.
Warning: can't set imports_granularity = Item, unstable features are only available in nightly channel.
Warning: can't set imports_granularity = Item, unstable features are only available in nightly channel.
Warning: can't set imports_granularity = Item, unstable features are only available in nightly channel.
Warning: can't set imports_granularity = Item, unstable features are only available in nightly channel.
Warning: can't set imports_granularity = Item, unstable features are only available in nightly channel.
Warning: can't set imports_granularity = Item, unstable features are only available in nightly channel.
Warning: can't set imports_granularity = Item, unstable features are only available in nightly channel.
Warning: can't set imports_granularity = Item, unstable features are only available in nightly channel.
Warning: can't set imports_granularity = Item, unstable features are only available in nightly channel.
Warning: can't set imports_granularity = Item, unstable features are only available in nightly channel.
Warning: can't set imports_granularity = Item, unstable features are only available in nightly channel.
Warning: can't set imports_granularity = Item, unstable features are only available in nightly channel.
Warning: can't set imports_granularity = Item, unstable features are only available in nightly channel.
Warning: can't set imports_granularity = Item, unstable features are only available in nightly channel.
Warning: can't set imports_granularity = Item, unstable features are only available in nightly channel.
Warning: can't set imports_granularity = Item, unstable features are only available in nightly channel.

</p>
</details>

aibrahim-oai contributor · 10 months ago

Cannot you get this info from /status?

MaurUppi · 10 months ago
Cannot you get this info from /status?

1./status did not provide git info, delta, etc

  1. almost real-time always ON vs. ran slash command manually.

<img width="513" height="683" alt="Image" src="https://github.com/user-attachments/assets/27b7d9ec-eaa4-47d7-9696-1010bc9e491d" />

leichti · 8 months ago

would be super nice to have more information in the TUI, there is space, why not allowing to use it?

etraut-openai contributor · 5 months ago

Closing in favor of #2926, which has received more upvotes.