Skip to content

[Bug]: Android shows two notifications for one thread completion #27447

Closed

Description

@yungsamd17

Before submitting

  • I searched existing issues and did not find a duplicate.
  • I included enough detail to reproduce or investigate the problem.

Area

apps/mobile

Steps to reproduce

  1. On an Android phone, sign in to T3 Connect and link an environment.
  2. Open Settings → Notifications and enable both Device Notifications and Agent Live Updates (labelled Ongoing Agent Activity on Android versions before Live Updates are available).
  3. Start a run in any thread and let it finish while the phone is locked or the app is in the background. The thread used here is in No project.
  4. Open the Android notification shade.

Expected behavior

A single thread completion should produce one visible notification, or the activity card and the completion alert should be merged into one card. The alert sound/vibration should still fire exactly once.

Actual behavior

Every completion produces two cards for the same thread and the same event:

  • Ongoing activity card — title is the thread name, body is Done No project. Done is bold and tinted; the card is silent and stays for up to ~15 minutes.
  • Completion alert — title is the thread name, body is Done: No project. This is the card that makes the sound.

The only visible difference is the colon and the bold status prefix, so it reads as a duplicated notification. On Android 16 the activity card can be promoted to a Live Update, which makes the duplication more obvious: the same finish shows up as a promoted chip and as a separate alert.

This is deterministic and happens for every completed run while both notification options are on, so the shade fills with pairs when several threads finish.

Relevant code paths (current main):

  • infra/relay/src/agentActivity/FcmDeliveries.ts builds one FCM data message that contains both alert_* fields and activity_* fields (...androidActivityData(displayedAggregate), ...alert).
  • apps/mobile/modules/t3-agent-notifications/.../AgentNotifications.kt receive() renders that single payload twice: showAlert(...) and updateActivity(...).
  • The alert body is ${status}: ${projectTitle} (agentActivityAlerts.ts → alertForActivityRows), while the activity body is ${status} ${title} with the thread title replaced by the project for a single row (AgentActivityPresentation.kt → statusLine). That matches the two strings in the screenshot.

No project is the project slot for a thread that is not in a project; it is not part of the notification defect.

Impact

Minor bug or occasional failure

Version or commit

T3 Code Android 2.2.0 (735), installed from Google Play

Environment

Redmi Note 14
Android 16 - HyperOS 3.0.302
T3 Connect enabled; Device Notifications and Agent Live Updates both enabled.

Logs or stack traces

No crash or error. The duplicate is visible in the payload and rendering paths above; no device logs needed to reproduce.

Screenshots, recordings, or supporting files

Image

The screenshot shows two T3 Code cards for the thread settings for phone workflow:

  • Done No project (activity card)
  • Done: No project (completion alert)

Workaround

Turn off Agent Live Updates / Ongoing Agent Activity in Settings → Notifications to keep only the Done: … alert. Turning off Device Notifications instead leaves the silent activity card but removes audible completion alerts.

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

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions