Show an indicator in the sidebar for conversations that have an unsaved composer draft
Nobody has claimed this yet.
- Dominant language
- Rust
- Stars
- 125k
- Forks
- 19.4k
- PR merge metrics
- PR metrics pending
Description
Problem
When I type a message in a conversation's composer but don't send it (for example, I'm
collecting drafts across several conversations and plan to send them all at once later),
the draft is preserved per conversation, but there is no way to see which conversations
have pending drafts without opening each one.
The sidebar currently distinguishes several thread states (running, unread, waiting for
input), and the desktop app shows an unread/completion badge on threads with new activity.
There is no equivalent signal for "this thread has unsent composer text".
This makes it easy to lose track of pending drafts, especially when:
- drafts are intentionally held back (e.g., waiting for lower API pricing, reviewing later);
- the app is restarted and the thread list is the only place you look;
- multiple conversations each contain a few paragraphs of unsent text.
Requested behavior
Add a small, unobtrusive indicator on sidebar thread rows that have a non-empty unsent
composer draft, similar in placement/style to the existing unread badge:
- a dot (or small pencil/
draftmarker) next to the thread title/row; - shown regardless of whether the thread is currently open or has unread activity;
- disappears when the draft is sent or cleared;
- also visible in any other thread pickers that already render per-thread status
(e.g., the quick-resume list), for consistency.
Suggested scope
- Codex desktop app sidebar (and ideally the same thread-status pickers that already show
running/unreadstates). - A plain boolean signal based on the composer draft text (non-empty after trimming) is
sufficient; no need for preview text or timestamps.
Related
- Existing unread/completion badge behavior (see e.g. #33100 for the automation completion
badge discussion). - Manual workaround today: "Mark chat as unread" (
Ctrl+Shift+U/Cmd+Shift+U) can be
applied to draft-holding threads, but it is manual and not tied to draft state.
Contributor guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Research direction
No files or tests are named. Start by locating the desktop app's sidebar thread rows and the quick-resume or other thread-status pickers, then trace how composer draft text is exposed to them. Done means non-empty trimmed drafts show an indicator in each relevant picker and the indicator disappears when the draft is sent or cleared.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- rust
- Domain
- desktop
- Issue type
- Feature
- Difficulty
- 4/5
- Estimated time
- 3-5 days
- Activity status
- Active
- Clarity
- Mostly clear
- Newbie friendliness
- 55/100