Conversation naming (#8991)

Session renaming:
- `/rename my_session`
- `/rename` without arg and passing an argument in `customViewPrompt`
- AppExitInfo shows resume hint using the session name if set instead of
uuid, defaults to uuid if not set
- Names are stored in `CODEX_HOME/sessions.jsonl`

Session resuming:
- codex resume <name> lookup for `CODEX_HOME/sessions.jsonl` first entry
matching the name and resumes the session

---------

Co-authored-by: jif-oai <jif@openai.com>
This commit is contained in:
pap-openai
2026-01-30 10:40:09 +00:00
committed by GitHub
parent 25ad414680
commit 1ef5455eb6
33 changed files with 908 additions and 30 deletions

View File

@@ -148,6 +148,7 @@ async fn status_snapshot_includes_reasoning_details() {
&usage,
&None,
None,
None,
Some(&rate_display),
None,
captured_at,
@@ -200,6 +201,7 @@ async fn status_snapshot_includes_forked_from() {
Some(&token_info),
&usage,
&Some(session_id),
None,
Some(forked_from),
None,
None,
@@ -260,6 +262,7 @@ async fn status_snapshot_includes_monthly_limit() {
&usage,
&None,
None,
None,
Some(&rate_display),
None,
captured_at,
@@ -307,6 +310,7 @@ async fn status_snapshot_shows_unlimited_credits() {
&usage,
&None,
None,
None,
Some(&rate_display),
None,
captured_at,
@@ -353,6 +357,7 @@ async fn status_snapshot_shows_positive_credits() {
&usage,
&None,
None,
None,
Some(&rate_display),
None,
captured_at,
@@ -399,6 +404,7 @@ async fn status_snapshot_hides_zero_credits() {
&usage,
&None,
None,
None,
Some(&rate_display),
None,
captured_at,
@@ -443,6 +449,7 @@ async fn status_snapshot_hides_when_has_no_credits_flag() {
&usage,
&None,
None,
None,
Some(&rate_display),
None,
captured_at,
@@ -489,6 +496,7 @@ async fn status_card_token_usage_excludes_cached_tokens() {
None,
None,
None,
None,
now,
&model_slug,
None,
@@ -546,6 +554,7 @@ async fn status_snapshot_truncates_in_narrow_terminal() {
&usage,
&None,
None,
None,
Some(&rate_display),
None,
captured_at,
@@ -596,6 +605,7 @@ async fn status_snapshot_shows_missing_limits_message() {
None,
None,
None,
None,
now,
&model_slug,
None,
@@ -660,6 +670,7 @@ async fn status_snapshot_includes_credits_and_limits() {
&usage,
&None,
None,
None,
Some(&rate_display),
None,
captured_at,
@@ -714,6 +725,7 @@ async fn status_snapshot_shows_empty_limits_message() {
&usage,
&None,
None,
None,
Some(&rate_display),
None,
captured_at,
@@ -777,6 +789,7 @@ async fn status_snapshot_shows_stale_limits_message() {
&usage,
&None,
None,
None,
Some(&rate_display),
None,
now,
@@ -844,6 +857,7 @@ async fn status_snapshot_cached_limits_hide_credits_without_flag() {
&usage,
&None,
None,
None,
Some(&rate_display),
None,
now,
@@ -903,6 +917,7 @@ async fn status_context_window_uses_last_usage() {
None,
None,
None,
None,
now,
&model_slug,
None,