When using cssh to manage a large number of servers occasionally the next day I have to reopen several windows due to a system restarting or timeout. To solve this problem I added a History menu that would keep a list of which servers had their window close. I also added two commands to this menu: "Re-Open All Hosts" and "Remove all Hosts". When a window closes, its removed from the Hosts menu and added to the History menu. Clicking on the server or "Re-Open Alll Hosts" opns the window and adds it back to the Hosts menu. Adding the host back by name or within a cluster will also remove it from the History menu.
Here's how I accomplished:
At the end of build_hosts_menu I added a call to build_history menu and then duplicated the servers into a second hash. The new sub compares for any items in the copy but on the orig and adds it to an array. It erases everything below the number of static items and adds a new menuitem for each entry in the array. The menu items run open_client_windows(resolve_names( $svr)) and then build_hosts_menu. Within resolve_names I added a section try and find the item from the history array and remove it.