56058287dd
Some LLMs (e.g. qwen3 series) emit blank lines like "\n\n" before tool calls. The backend faithfully forwards these as thought_chunk events because streamThinkingToEventBus only filters chunk.Content == "" and treats whitespace as content. The frontend then merges them into a thinking event whose content is non-empty in JS truthiness terms but visually empty, producing a "思考" card with a chevron and no text. Filter such events out at the end of buildFullEventList so neither the intermediate-steps tree nor the displayEvents fallback path renders them.