Built-in tools for live Property Inspection, Developer Mode graph toggles, and Chrome DevTools source debugging.
Because STRVCT generates user interfaces from annotated model nodes, the framework can automatically derive an alternate Property Inspector view for any domain object.
SvApp.shared().developerMode()), revealing hidden diagnostic subnodes, raw state inspectors, and AI message logs.Holding Option while clicking any tile opens an inspector view in the next column instead of navigating to the node's standard subnodes.
SvInspectableNode):SvTile.justAlternateTap()) catches the Option-Click gesture and sets isInspecting = true on the tile.SvInspectableNode.nodeInspector() clones an inspector node and populates it via setupInspectorFromSlots().setupInspectorFromSlots() walks allSlotsMap() down the node's class inheritance chain, instantiating an SvFieldTile for every slot where slot.canInspect() returns true.slot.setCanEditInspection(true): Controls whether the slot value is editable in place inside the inspector.slot.setInspectorPath("Section/Subsection"): Groups slots into collapsible inspector section headers.Pressing Option+Shift+D anywhere in SvBrowserView toggles SvApp.shared().developerMode(). The app posts an onAppDeveloperModeChangedNote notification when toggled.
Domain nodes register to observe the notification and show or hide diagnostic subnodes:
(class Character extends SvStorableNode {
init () {
super.init();
this.watchForNote("onAppDeveloperModeChangedNote");
}
onAppDeveloperModeChangedNote (/*aNote*/) {
const devMode = this.app().developerMode();
this.diagnosticsNode().setIsVisible(devMode);
this.rawStateNode().setIsVisible(devMode);
this.aiMessageHistory().setIsVisible(devMode);
}
}.initThisClass());SvNode domain abstraction.