mirror of
https://github.com/nesquena/hermes-webui.git
synced 2026-05-25 11:10:18 +00:00
f328f3b843
Pre-release Opus review on v0.50.246 caught a SHOULD-FIX in PR #1338's cancel_stream synthesis: the symmetric substring guard (_pending_user in _last_content OR _last_content in _pending_user) was too loose. Common confirmation replies ("ok", "yes", "go") in the prior turn would match longer follow-up prompts ("ok please continue"), the synthesis would be skipped, and the user's typed text would be lost — exactly the data-loss bug #1298 was supposed to fix. The fix: gate the substring check on a timestamp comparison. Only treat the latest user turn as 'already merged by the streaming thread' if its timestamp is at or after pending_started_at. Earlier turns whose content happens to be a substring of the pending must not short-circuit synthesis. Also drops the symmetric (_last_content in _pending_user) branch — that direction was the false-positive vector. Keeps the equality and prefix match (workspace-prefix tolerance from the streaming thread). Adds tests/test_issue1298_cancel_and_activity.py:: test_cancel_synthesizes_when_prior_turn_content_is_substring_of_pending — regression for the exact 'ok' → 'ok please continue' scenario.