Collapse and coalesce repetitive heartbeat updates instead of adding full chat turns
Nobody has claimed this yet.
Assessment
- Difficulty
- 5/5
- Estimated time
- Over a week
- Newbie friendliness
- 38/100
Research direction
No files, tests, or entry points are named. Start by locating the Codex App paths for heartbeat rendering, event persistence, search, accessibility, and device sync; done means the acceptance criteria hold without changing automation execution or delivery semantics.
Written by the indexing model from the issue text.
Description
What variant of Codex are you using?
Codex App (desktop), with recurring heartbeat/automation updates delivered into an active project thread.
What feature would you like to see?
Repeated heartbeat or automation results should not each become a full-width chat turn. Please group them into a collapsed status surface, such as an Automation activity side panel or a compact expandable row in the thread.
Proposed interaction:
- Present the current unique status once.
- Coalesce consecutive identical updates and show a ticker/badge such as 42 identical updates.
- Show the first update time, latest update time, and next scheduled run.
- Keep the group collapsed by default; expanding it reveals the timestamped audit trail.
- When the status, decision, or message changes, create a new visible status item and draw attention to the delta.
- Let users choose a thread-level display mode: Inline, Collapsed, or Side panel.
- Do not increase the main-thread unread count or scroll length for an unchanged repeated update.
A reasonable grouping key would be:
automation_id + decision + normalized message
Consecutive events with the same key increment the count. A changed key closes the prior run and starts a new status group. The raw events should remain available for audit/export even when the UI coalesces them.
Why this matters
A heartbeat running every two hours can produce dozens of identical messages over several days. Those messages bury the actual human/agent conversation, make search and scrolling harder, and add no new information. The important status should remain visible without repeating the same transcript block.
Suggested notification behavior
DONT_NOTIFY: record only in the collapsed activity stream.- First
NOTIFYfor a unique status: show once in the main thread and in the activity stream. - Repeated identical
NOTIFY: increment the ticker without adding another full chat turn. - Changed or escalated
NOTIFY: surface immediately as a new compact thread event.
Acceptance criteria
- Fifty identical heartbeat events render as one collapsed status item with an
x50ticker, first/latest timestamps, and no fifty-message increase in thread length. - Expanding the item reveals all original timestamps and payloads.
- A changed heartbeat message or decision appears immediately as a separate status item.
- A one-off important notification remains clearly visible in the main conversation.
- Group counts and event history survive app restart, thread resume, and device sync.
- Grouped updates remain searchable and accessible by keyboard and screen reader.
- Coalescing changes presentation only; it does not alter automation execution or delivery semantics.
Additional information
This is especially valuable for long-lived planning threads where the heartbeat is intentionally persistent but usually unchanged. The ideal result is a quiet operational ticker: the latest meaningful information appears once, while repetition is represented by a count rather than transcript volume.
- Dominant language
- Rust
- Stars
- 125k
- Forks
- 19.5k
- Avg merge
- 1m
- Merged PRs (30d)
- 1k
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.
More from openai/codex
-
enhancement remote
Difficulty 2/5 1-3 hours Newbie friendliness 68/100
-
bug CLI windows-os
Difficulty 2/5 1-3 hours Newbie friendliness 76/100
-
macOS sandbox blocks hw.optional.arm64 sysctl, causing Flutter to misdetect Apple Silicon as x64 Openbug CLI sandbox
Difficulty 2/5 1-3 hours Newbie friendliness 78/100
-
bug CLI TUI
Difficulty 2/5 1-3 hours Newbie friendliness 90/100
-
CLI config enhancement skills
Difficulty 2/5 1-3 hours Newbie friendliness 84/100
Similar issues
-
Difficulty 2/5 1-3 hours Newbie friendliness 86/100
kwakseongjae/auto-hwp#319 ·
-
area:cli bug filter-quality good first issue priority:medium
Difficulty 2/5 1-3 hours Newbie friendliness 84/100
-
Difficulty 1/5 Under an hour Newbie friendliness 72/100
bevyengine/bevy#25861 ·
-
comp-datalake
Difficulty 2/5 1-3 hours Newbie friendliness 88/100
ClickHouse/ClickHouse#121222 ·
-
A-linter
Difficulty 2/5 1-3 hours Newbie friendliness 72/100
oxc-project/oxc#26863 ·