Feedback telegram bot ux reactions

Justin pushed back on the noisy two-bubble flow ("Got it." → ""). Reactions are silent acks: instant feedback without polluting the chat.

Why: every bubble is something Justin's eyes have to skim. Two bubbles per message = 2x noise on the day's hourly check-ins (13 fires/day). At 26 noisy bubbles/day, the UX rots fast. Reactions land instantly without taking visual space.

How to apply: - New Telegram bot work: react via setMessageReaction (Bot API 7.0+). Don't send "Got it." / "Thinking..." / "On it." text bubbles. - For waiting feedback longer than 5s: sendChatAction(typing) with a heartbeat thread (refresh every 4s; Telegram's typing indicator has ~5s TTL). - On success: change reaction from 👀 to 👌. On failure: change to 🤔. - For voice messages: keep the "🎤 Heard: " bubble — that's informative (Justin verifies what was transcribed). But drop "🎤 Transcribing..." since the 👀 + typing already telegraph that work is happening. - Telegram only allows reactions from a fixed emoji whitelist (👀 👍 👎 🔥 👌 🤔 💔 🙏 etc.). Picking outside the list silently no-ops, so prefer ones from the whitelist.

Implementation reference: all 4 bots now share the same react() + typing() helpers + handle_message() flow: - forge/scripts/forge_telegram_capture_bot.py - forge/scripts/forge_telegram_coordinator_bot.py - forge/scripts/forge_telegram_notify_bot.py (added 2026-04-29 evening) - forge/scripts/forge_telegram_remote_bridge.py (added 2026-04-29 evening)

Action-prefix companion rule (added 2026-04-29 evening): Reactions tell Justin "I heard / I'm done"; the prefix tells him "what I did." Every outbound text bubble that confirms a tool action now starts with a labeled prefix (e.g. Food Item Logged:, Calendar Event Created:, Task Created:, Inbox Item Saved:, Session Spawned:, Failed: <tool>). Multi-action replies stack each prefix on its own line. Conversational replies (no tool ran) stay prefix-free. Capture + coordinator brains have the full prefix table in their system prompts; the remote bridge wraps prefixes around brain output in execute_brain_decision.

[Claude Code, bot-refiner-v2, 2026-04-29; expanded to all 4 bots + action prefixes 2026-04-29 evening]