fix(simplex): add polling fallback for missed chat items - #27360
Closed
Zoffka wants to merge 3 commits into
Closed
Conversation
Reduce fallback polling latency, persist seen item IDs, and resolve SimpleX send targets via CLI display names.
This comment was marked as spam.
This comment was marked as spam.
Collaborator
Zoffka
force-pushed
the
fix/simplex-polling-latency
branch
from
May 17, 2026 09:34
078900e to
8f8639d
Compare
Author
|
Closing for now while we finish root-causing the SimpleX daemon/poller interaction. We will open a cleaner PR once the fix is properly scoped and verified end-to-end. |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Fixes SimpleX inbound reliability when the daemon does not push
newChatItemevents to the persistent WebSocket client.The adapter now:
/tail 50polling fallback alongside the persistent WS listener~/.hermes/simplex_seen_items.jsondirect:<contactId>:<itemId>,group:<groupId>:<itemId>) instead of globally treatingitemIdas uniqueresppayloads fornewChatItem,newChatItems, andchatItems/chats alldisplay-name targets, surfacingchatCmdErrorinstead of silently reporting successWhy
Some simplex-chat daemon versions/modes keep the persistent WebSocket connection open but do not deliver fresh chat-item push events to every connected client. Hermes then appears silent until restart/reconnect, despite messages being visible in
simplex-chat /tail.Polling
/tail 50gives Hermes a deterministic fallback path, while persisted per-chat seen keys prevent stale backlog replay after restarts and avoid DM/groupitemIdcollisions.Test Plan
python -m pytest tests/gateway/test_simplex_plugin.py -qpython -m py_compile plugins/platforms/simplex/adapter.py tests/gateway/test_simplex_plugin.pygit diff --check