Skip to content

Collapse and coalesce repetitive heartbeat updates instead of adding full chat turns #34974

Open

Description

@tristan-nextcz

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 NOTIFY for 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 x50 ticker, 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.

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    appIssues related to the Codex desktop appautomationsenhancementNew feature or request

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions