← Back to PRs

#11494: fix(bluebubbles): skip typing indicator for tapback messages

by mcaxtr open 2026-02-07 22:07 View on GitHub →
channel: bluebubbles size: S trusted-contributor experienced-contributor
## Summary Fixes #11189 When a tapback/reaction message is received, the typing indicator was being started in `onReplyStart` but would linger indefinitely because the agent typically returns `NO_REPLY` for these messages. This PR adds an early return check for `isTapbackMessage` in the `onReplyStart` callback to skip starting the typing indicator for tapback/reaction messages. ## Changes - `extensions/bluebubbles/src/monitor.ts`: Added check for `isTapbackMessage` before starting typing indicator - `extensions/bluebubbles/src/monitor.test.ts`: Added test to verify typing indicator is NOT started for tapback messages ## Test plan - [x] New test fails before fix, passes after (TDD) - [x] All 52 existing monitor tests pass - [x] Full CI gate passes (`pnpm build && pnpm check && pnpm test`) - [x] Codex review passes with no regressions identified ### Manual verification scenarios: - [ ] Receive a tapback → Verify no typing indicator appears - [ ] Receive a regular message → Verify typing indicator still works normally - [ ] Receive a tapback in a group → Verify no typing indicator <!-- greptile_comment --> <h2>Greptile Overview</h2> <h3>Greptile Summary</h3> This PR updates the BlueBubbles webhook monitor to avoid starting a typing indicator for tapback/reaction (“tapback”) messages. Specifically, `onReplyStart` now returns early when `isTapbackMessage` is true, preventing a typing “start” call that would otherwise linger when the agent returns `NO_REPLY`. A new test in `extensions/bluebubbles/src/monitor.test.ts` asserts that for a tapback-pattern payload, invoking the reply start hook does not result in any `sendBlueBubblesTyping(..., true, ...)` calls, while existing typing indicator behavior remains covered by adjacent tests. <h3>Confidence Score: 5/5</h3> - This PR is safe to merge with minimal risk. - The change is narrowly scoped (an early return in `onReplyStart` guarded by an existing `isTapbackMessage` flag) and is covered by a targeted unit test. No other behavior is modified, and the new logic is consistent with the reported issue (typing indicator lingering when no reply is produced). - No files require special attention <!-- greptile_other_comments_section --> <!-- /greptile_comment -->

Most Similar PRs