fix(gateway): default Telegram to final-answer-first - #54742
Conversation
tonydwb
left a comment
There was a problem hiding this comment.
Code Review Summary
Verdict: LGTM
Well-scoped behavioral change: Telegram defaults now keep persistent progress/interim chatter off, preventing bot-authored fragments from lingering in mobile chat history. The config defaults, platform tier, and generated config are all updated consistently. Tests cover the new defaults and the opt-in path.
Looks Good
- Clear rationale in comments about userbot/Business mirroring concerns
- Consistent changes across display_config.py, config.py, and test files
- New tests verify default config doesn't re-enable Telegram progress via globals
- cleanup_progress: True added for Telegram — good UX detail
Reviewed by Hermes Agent
9688179 to
9fd1671
Compare
tonydwb
left a comment
There was a problem hiding this comment.
Code Review Summary
Verdict: LGTM
Clean fix to default Telegram to final-answer-first mode. The change is well-documented and the tests are updated to reflect the new defaults. The rationale for keeping persistent progress/interim chatter off by default is clear.
Looks Good
- Minimal, focused change
- Good test coverage (updated existing tests)
- Clear documentation of the rationale
- Users can still opt into progress explicitly per platform
- Follows existing patterns in the codebase
Reviewed by Hermes Agent
9fd1671 to
cf22087
Compare
teknium1
left a comment
There was a problem hiding this comment.
Thanks for the focused Telegram UX work. Current main intentionally implements the opposite default.
Problems
gateway/display_config.py:123-124would reverse maintainer commit0325e18f3426b91d0213cc064cbe7355bf028690(#33187), which restored interim commentary and long-running notifications after finding that final-answer-first left Telegram users with only a typing indicator during long turns.- The persistent-heartbeat concern is already addressed in
gateway/run.py:19358-19436: the gateway retains one heartbeat message ID and edits it in place instead of sending a new message each interval. The documented Telegram contract likewise keeps those two signals on while leavingtool_progressand verbose busy detail off (website/docs/user-guide/messaging/index.md:621-640).
Suggested changes
- Retain the current defaults; users can already opt out per platform through
display.platforms.telegram.interim_assistant_messagesandlong_running_notifications.
Automated hermes-sweeper review.
| # turn start and final answer. Otherwise it looks like "typing..." for | ||
| # 30 minutes with nothing happening. Opt in to verbose iteration detail | ||
| # via display.platforms.telegram.busy_ack_detail / tool_progress. | ||
| # Telegram is usually a durable mobile inbox. Bot-authored progress and |
There was a problem hiding this comment.
This reverses the explicit maintainer decision in 0325e18f (#33187): Telegram should retain real mid-turn commentary because suppressing it left users with only a typing indicator during long turns. The existing per-platform setting already lets users opt out.
| # 30 minutes with nothing happening. Opt in to verbose iteration detail | ||
| # via display.platforms.telegram.busy_ack_detail / tool_progress. | ||
| # Telegram is usually a durable mobile inbox. Bot-authored progress and | ||
| # interim assistant/commentary fragments stay in chat history and can look |
There was a problem hiding this comment.
Current main addresses durable-chat noise without disabling the liveness signal: gateway/run.py:19358-19436 edits a single heartbeat message in place. Please preserve this default unless maintainers choose to reverse the #33187 product decision.
Summary
Why
Telegram is a durable mobile inbox. Progress bubbles, interim assistant fragments, and heartbeat/status messages persist in chat history and can be confusing when the chat is mirrored or inspected from another Telegram client. Final answers still send normally; users can explicitly re-enable streaming/progress/interim chatter per platform.
Test plan
python -m pytest -q tests/gateway/test_display_config.py tests/gateway/test_per_platform_streaming_defaults.py -o 'addopts='python -m py_compile gateway/display_config.py hermes_cli/config.py tests/gateway/test_display_config.py tests/gateway/test_per_platform_streaming_defaults.pygit diff --check