fn join_window_texts(parts: &[String]) -> String
Window texts back into one transcript. Trims and drops empties, so a silent stretch inside a take vanishes at the join instead of leaving a doubled space.