f05fec3565
The agent loop writes an internal "(empty)" sentinel when the nudge/prefill/empties/fallback ladder all fail. The gateway converts it into a user-friendly notice at delivery, but the desktop group-chat bridge appended the raw sentinel into the room log (seen posting "(empty)" in a Bot Mode group room), and it synced to the shared ui_meta for mobile. Normalize at the single choke point, appendGroupChatEntry, mirroring gateway/run.py substitution so group chat and gateway surfaces show the same text. (pass)/empty silence semantics unchanged. Includes a regression test proven to fail on the pre-fix code. Fixes #94308