Created:1780782755Priority:BStatus:doneDescription:
Right now, abstract parts can have child parts defined but those child parts must have their "abstract" property explicitly set to true. Having it set to false (or not defined) would result in an erroneous configuration. This makes the property useless except to cause errors. The suggested solution is that the child part of any abstract part should be assumed to be abstract as well and the manifest should be ignored for this purpose.
Also, parts currently do not inherit a child part structure that matches their prototype. Any child part structure to be inherited must explicitly be provided with each child part manually needing to provide a manifest with the correct "extends" property in its manifest pointing to the child part of its own parent's abstract. This feels redundant. It will be more convenient to have prototype child parts cloned as child parts of their inheritor. Then, any explicit child parts of the inheritor will be merged with same-name child parts of the prototype up to and including merging the manifest, with the explicit inheritor tree taking precedence. This allows the inheritor to augment and customize inherited child parts as needed, up to and incluing assigning them a different prototype than the one that would automatically be assigned.
Finally, there needs be a method of declaring that an inherited child part should remain abstract even if the inheritor is a concrete part. This could be used, for example, by a blog abstract which includes a single blog post abstract as its child. The blog post abstract in this case is understood not to represent a single concrete blog post, but rather the blog post template that the inheriting blog can use to make its own posts. As such, the inheritor's clone of the blog post child part should remain abstract even when it is inherited by the concrete blog. There must therefore be an indication on each child part of an abstract part whether the part is intended to be inherited as an abstract part or instantiated as a concrete part. The suggested fix is to repurpose the "abstract" property of inherited child part manifests to control this.
The result is that all descendants of abstract parts are cloned exactly "as-is" (including each one's "abstract" property) when inherited.
Affected Parts:issue-tracker.kireji.app, active-overlay.issue-tracker.kireji.app, issue-modal.active-overlay.issue-tracker.kireji.appLinked Issues: None