Feature Request: func_viscluster reconstruction
While it is true that the func_viscluster entity is removed by VBSP, there is still a little bit of data left over that should allow bspsrc to be able to vaguely reconstruct a func_viscluster.
the dleaf_t struct in the leaf array lump (lump 10) stores a short which contains what cluster a visleaf is in. while visleaves that are not in a func_viscluster entity have their own unique value for this, visleaves that are within a func_viscluster entity share the same value. From that info it should be possible to reconstruct a func_viscluster using the shape of the visleafs within the same cluster. Valve even uses this data themselves with mat_leafvis 2, which shows the current viscluster you are in.
Example of mat_leafvis 2 rendering an entire cluster on pl_upward in TF2:
Because every visleaf has a cluster, even if its not within a func_viscluster entity, it probably would be worthwhile to create a list of visclusters and the leafs within them, and then ignore all of the clusters that only have 1 visleaf. Naturally, the func_viscluster entities which bspsrc could create would probably not be 100% accurate to the original VMF due to being remade from compiled vis data, but it would be better than nothing, especially on bigger maps that use them a lot, and it sure would beat manually recreating them by running around ingame and trying to find them.
Also, if you have developer 1 set while mat_leafvis is enabled (any value), everytime you move into a new visleaf the console will output a message which displays the visleaf number, area number, and cluster number, which might be helpful for validating the results of the reconstructor