/resume screen conversations should be middle-truncated
What feature would you like to see?
Issue
Conversation forking significantly limits the utility of the /resume feature. Forks result a list of conversations that all looking the same in the resume screen. This requires users to either (a) guess and peck at 1 of n choices until they resume the correct conversation (b) maintain their own workflow to record session ids that matter to them.
Solution
We can significantly improve the ergonomics of the screen by presenting users with a middle-truncated Conversation field.
The logic for the middle truncation would be this: [beginning of first user message] + [...] + [end of last user message]
Example
Here's a a mock up of how the resume screen is currently presented, with right-side truncation:
Resume a previous session
Type to search
Updated Branch Conversation
6 seconds ago main Payments: Stripe webhook handler double-charges customers after retries in prod; logs + code attached…
9 seconds ago main Payments: Stripe webhook handler double-charges customers after retries in prod; logs + code attached…
12 seconds ago main Payments: Stripe webhook handler double-charges customers after retries in prod; logs + code attached…
18 seconds ago main Search service: some users get empty results during rollout even though docs exist; canary metrics pasted…
22 seconds ago main Search service: some users get empty results during rollout even though docs exist; canary metrics pasted…
26 seconds ago main Search service: some users get empty results during rollout even though docs exist; canary metrics pasted…
31 seconds ago main Search service: some users get empty results during rollout even though docs exist; canary metrics pasted…
1 minute ago main Monorepo: `pnpm install` fails in CI after Node upgrade while local passes; lockfile + CI output attached…
> 2 minutes ago main Monorepo: `pnpm install` fails in CI after Node upgrade while local passes; lockfile + CI output attached…
3 minutes ago main Monorepo: `pnpm install` fails in CI after Node upgrade while local passes; lockfile + CI output attached…
4 minutes ago main Monorepo: `pnpm install` fails in CI after Node upgrade while local passes; lockfile + CI output attached…
6 minutes ago main Auth: intermittent 401s after refresh; token rotation + clock skew suspicion; request traces pasted…
8 minutes ago main Auth: intermittent 401s after refresh; token rotation + clock skew suspicion; request traces pasted…
11 minutes ago main Auth: intermittent 401s after refresh; token rotation + clock skew suspicion; request traces pasted…
14 minutes ago main Kubernetes: CronJob runs twice during node drain / reschedule; manifests + controller logs attached…
17 minutes ago main Kubernetes: CronJob runs twice during node drain / reschedule; manifests + controller logs attached…
21 minutes ago main Kubernetes: CronJob runs twice during node drain / reschedule; manifests + controller logs attached…
27 minutes ago main Terraform: IAM policy diff every plan; JSON ordering seems unstable; module snippet included below…
33 minutes ago main Terraform: IAM policy diff every plan; JSON ordering seems unstable; module snippet included below…
41 minutes ago main Terraform: IAM policy diff every plan; JSON ordering seems unstable; module snippet included below…
55 minutes ago main Python: asyncio worker deadlocks when pool is saturated; stack traces + minimal repro attached…
1 hour ago dev Python: asyncio worker deadlocks when pool is saturated; stack traces + minimal repro attached…
2 hours ago main Postgres: feed query slow even with a new composite index; EXPLAIN ANALYZE + schema excerpt included…
4 hours ago main Postgres: feed query slow even with a new composite index; EXPLAIN ANALYZE + schema excerpt included…
8 hours ago main Postgres: feed query slow even with a new composite index; EXPLAIN ANALYZE + schema excerpt included…
enter to resume esc to start new ctrl + c to quit ↑/↓ to browse
Note how forked conversations all appear to be the same, with Updated being the only differentiating field.
Here's how the same screen with the proposed middle truncation:
Resume a previous session
Type to search
Updated Branch Conversation
6 seconds ago main Payments: Stripe webhook handler double-charges cust…can you suggest an idempotency-key approach now?
9 seconds ago main Payments: Stripe webhook handler double-charges cust…can you show a transaction-safe rewrite, please?
12 seconds ago main Payments: Stripe webhook handler double-charges cust…can you propose a dedupe job for historical data too?
18 seconds ago main Search service: some users get empty results during r…what rollout steps would you use, to avoid gaps?
22 seconds ago main Search service: some users get empty results during r…can you outline a safer reindex/cutover plan, pls?
26 seconds ago main Search service: some users get empty results during r…what metrics/alerts would catch this early, in prod?
31 seconds ago main Search service: some users get empty results during r…can you suggest a feature-flag strategy for it, too?
1 minute ago main Monorepo: `pnpm install` fails in CI after Node upgrade…what should I pin, so installs are reproducible?
> 2 minutes ago main Monorepo: `pnpm install` fails in CI after Node upgrade…why did Turbo cache hits drop to 0% in CI again?
3 minutes ago main Monorepo: `pnpm install` fails in CI after Node upgrade…can you explain the lockfile diff I’m seeing, too?
4 minutes ago main Monorepo: `pnpm install` fails in CI after Node upgrade…what’s the smallest CI change to stabilize it, pls?
6 minutes ago main Auth: intermittent 401s after token refresh; rotation…what’s wrong with refresh token rotation, in it?
8 minutes ago main Auth: intermittent 401s after token refresh; rotation…can you propose leeway + retry rules, for mobile too?
11 minutes ago main Auth: intermittent 401s after token refresh; rotation…can you sketch tests to reproduce it deterministically?
14 minutes ago main Kubernetes: CronJob runs twice during node drain; res…how can I lock CronJob without adding Redis now?
17 minutes ago main Kubernetes: CronJob runs twice during node drain; res…can you suggest a leader-election option that’s simple?
21 minutes ago main Kubernetes: CronJob runs twice during node drain; res…can you show what to change in YAML, to prevent overlap?
27 minutes ago main Terraform: IAM policy diff every plan; JSON ordering…how do I make JSON ordering stable on every run?
33 minutes ago main Terraform: IAM policy diff every plan; JSON ordering…can you point out common causes in HCL, for this?
41 minutes ago main Terraform: IAM policy diff every plan; JSON ordering…can you rewrite this module snippet to be deterministic?
55 minutes ago main Python: asyncio worker deadlocks when pool is saturated…can you spot the blocking call causing deadlock?
1 hour ago dev Python: asyncio worker deadlocks when pool is saturated…can you propose a safer concurrency pattern, too?
2 hours ago main Postgres: feed query slow even with index; EXPLAIN here…can you rewrite it for keyset pagination w/ties?
4 hours ago main Postgres: feed query slow even with index; EXPLAIN here…can you explain why the planner ignores my index?
8 hours ago main Postgres: feed query slow even with index; EXPLAIN here…what’s the safest migration path for the new index?
enter to resume esc to start new ctrl + c to quit ↑/↓ to browse
Now, despite the shared initial message, users have more information to pick their desired resumption point.
Outcome
The user is able to resume conversations with ease.
Additional information
I've implemented this in my personal fork of codex. Willing to contribute if desired.
This issue has 3 comments on GitHub. Read the full discussion on GitHub ↗