Route message updates into injected optimizationContext and use app-level open* handlers to prevent no-op clicks. Avoid selecting a message on initial mount so the empty hint renders until the user picks one; add a regression test.