Hi again, I'm kind of late to the party but I still want this very bad.
So, Ashley, are you considering separate buttons for every batch action? I was imagining just anytime you make some change it prompts you with a popup on whether to make that as a batch change or not. Also we need to be able to filter to what layouts we are doing that in some way: I may want to add a "Player" layer to all my Level layouts, but not to my Main Menu layout. Templates and replicas would solve that.
No need to replicate content, that is just a more messy version of global layers. But that again goes to show that what we want is "just" global layers that don't replicate objects. Can you really not copy that functionality but just remove the object replication? I obviously don't know what the codebase looks like tho.
About rearranging layers:
You could make it so, when you try to move a layer, it looks for every layout that has the same exact layer structure (or, in an alternate implementation, every layout that is a replica of that template layer structure). Then, if any, Construct prompts you with a popup on whether or not you want that changed in a batch, and where to move it would be clear as the layouts' layer hierarchies would be the same.
About option 2, "Replicate sub-layers":
I like that, but I'd rearrange that as having layouts be the templates and replicas instead of some layer so we don't have to make a layer just for that. Obviously, instances wouldn't be replicated. Layout's can't be matched by name, of course, but I think it is reasonable you make a new option in the inspector for making layout templates and replicas. Although, now that I think of it, having it per layer would also be convenient for other purposes where I don't want the whole structure copied.
About the "renaming vs deleting and creating new" problem, I'd identify layers by a special kind of id to verify if it is a new layer or a renamed old layer. That could work like:
.When the user creates a new layer, check if one already exists in the entire project with that name.
-> If not, assign the new layer a unique id.
-> If any do, assign the new layer the found layer's id.
Now, if layers have a different name but the same id, a rename should be applied when syncing.
Again, note that any batch change implementation would pretty much need some "layout filtering". Just imagine I have a "Particles" layer in my level layouts, main menu layout, and maybe my lobby layout. They may serve different purposes and maybe shouldn't be changed in a batch. I'd have to rename them all to different things if there was no filtering. Filtering, I think, means either UI that pops up every batch change prompting you to select which layouts are to be affected or some kind of predefined groups of layouts (and that would pretty much be equivalent to templates and replicas, so maybe if you go with that just make the jump).
Option C is also reasonable enough, I like it.
Tokinsom It's not a matter of "sending a particular signal". The issue is that the user may rename now and only hit "Replicate" later. That is why the batch changes option doesn't have this issue.