294f32d6bc
normalizeGeneratedTitle only guarded emptiness and the none sentinel, so when the tiny title model ignored the titling task and answered the first user message, its full one-line reply became the session title verbatim. Bound accepted titles to 80 chars / 12 words and return null past that, deferring titling to the next user turn. Both the online and local-worker paths funnel through this normalizer, so both are covered. Fixes #7303