I think it's important to use the templates feature for this. It's what it's for: by defining a template, you are defining a named instance which you can make copies of. It's also what's used at runtime for creating instances based on copying another instance. If we define some other system for the editor, then the editor and runtime have different systems to define default instances. This then causes other inconsistencies, and people will ask things like "how do I create an instance at runtime that matches the editor's default instance?" to which the answer will still be "use templates"; others would rightly complain that the design of Construct is inconsistent. So I think this feature has to be based on templates.
My issue with your proposed solution is every single instance pulled from the project bar would then need to be manually set as a replica—an error-prone or easily forgotten step that my level designers should not be expected to do.
What if there's another checkbox to control whether new instances are replicas or not? It looks like the default at the moment is to make replicas. If you disable that then you just get a non-replica copy of the template set to be used for new instances in the editor.
We could still then add a 'Make default instance' context menu option, which would just be a shortcut to:
- Set the instance as a template with a default name (e.g. "default", but that string can be made translatable as the specific string doesn't matter)
- Set the object type to use that template name for new instances
...but it's not clear what that should do if the template named "default" already exists, nor whether you want the 'new instances are replicas' setting to be enabled or disabled. I'm also a bit concerned about long-term cluttering the Layout View context menu too much, as it's already pretty long. Perhaps it's not too bad to leave that as something that you manually set up?