fix(photon): ignore iMessage media placeholders - #54514
Conversation
106642c to
42d4e9c
Compare
|
Thanks for the focused Photon regression fix. Current The proposed guard is correctly placed before The branch is substantially behind current main, but main's Photon changes are in unrelated sidecar dependency startup code; the target dispatch hunk remains intact. This is an automated hermes-sweeper review. |
Cherry-picked from PR #54514; dropped frozen AUTHOR_MAP hunk in scripts/release.py, contributor mapping added instead.
Cherry-picked from PR #54514; dropped frozen AUTHOR_MAP hunk in scripts/release.py, contributor mapping added instead.
…decar-deps fixture Two independent cross-PR collisions red on main (slice 8/8): 1. fd4f756 (salvaged from stale #54514) added an early 'drop U+FFFC placeholder' return at the top of _dispatch_inbound — written before the deferred-wait handler (6b91b50/afab7ed46e) existed further down the same function. The early return shadowed it: _pending_fffc never populated, no attachment-timeout tracking, 4 tests red. Remove the duplicate block; the deferred handler already drops the placeholder AND tracks/cancels/warns. 2. 9cf2046 tightened sidecar_deps_installed() to require node_modules/spectrum-ts, but test_runtime_record's _patch_spawn fixture still created only bare node_modules/ — 2 tests red. Mirror a real completed install. tests/plugins/platforms/photon: 164/164 after; 158/164 before.
|
Merged via #73560 — cherry-picked with your authorship preserved (the frozen release.py AUTHOR_MAP hunk was swapped for a contributors/emails mapping). Note: the follow-up FFFC deferred-wait work on main later subsumed the early-drop site itself, but your placeholder detection + test shipped and the fix path lives on. |
Cherry-picked from PR NousResearch#54514; dropped frozen AUTHOR_MAP hunk in scripts/release.py, contributor mapping added instead.
…decar-deps fixture Two independent cross-PR collisions red on main (slice 8/8): 1. bc9b8be (salvaged from stale NousResearch#54514) added an early 'drop U+FFFC placeholder' return at the top of _dispatch_inbound — written before the deferred-wait handler (bfad053/499dd50e4b) existed further down the same function. The early return shadowed it: _pending_fffc never populated, no attachment-timeout tracking, 4 tests red. Remove the duplicate block; the deferred handler already drops the placeholder AND tracks/cancels/warns. 2. af6387e tightened sidecar_deps_installed() to require node_modules/spectrum-ts, but test_runtime_record's _patch_spawn fixture still created only bare node_modules/ — 2 tests red. Mirror a real completed install. tests/plugins/platforms/photon: 164/164 after; 158/164 before.
…decar-deps fixture Two independent cross-PR collisions red on main (slice 8/8): 1. fd4f756 (salvaged from stale NousResearch#54514) added an early 'drop U+FFFC placeholder' return at the top of _dispatch_inbound — written before the deferred-wait handler (6b91b50/afab7ed46e) existed further down the same function. The early return shadowed it: _pending_fffc never populated, no attachment-timeout tracking, 4 tests red. Remove the duplicate block; the deferred handler already drops the placeholder AND tracks/cancels/warns. 2. 9cf2046 tightened sidecar_deps_installed() to require node_modules/spectrum-ts, but test_runtime_record's _patch_spawn fixture still created only bare node_modules/ — 2 tests red. Mirror a real completed install. tests/plugins/platforms/photon: 164/164 after; 158/164 before.
Summary
Fixes a Photon/iMessage voice-note race where iMessage first emits a standalone U+FFFC object placeholder text event and then immediately emits the actual voice/attachment event.
Before this patch, Hermes treated the placeholder as a real text turn. The actual voice event then arrived while that bogus turn was active, triggering the gateway busy handler and sending a misleading:
This drops placeholder-only Photon text events at the platform boundary so the real voice/attachment event is processed normally.
Test plan
Result: