Integrate release recovery, semantic review, coverage and Windows packaging

This commit is contained in:
Codex
2026-09-06 16:31:55 -07:00
parent c091f80e6e
commit 2b2d2bc18b
174 changed files with 27635 additions and 127 deletions
@@ -6,6 +6,41 @@ use crate::behavior::{
};
impl App {
/// A saved state view has one renderer and tool set: the behavior workspace.
/// Run after navigation/adoption, never as a model or property edit. Keeping
/// selection and its Draft intact also preserves unrelated raw properties.
pub(super) fn route_state_diagram_workspace(&mut self) {
if self.page != Page::Diagram {
return;
}
let Some((diagram, machine, layer)) = self.active_diagram.and_then(|id| {
let view = self.project().diagrams.get(&id)?;
Some((id, view.projection.state_machine()?, view.layer))
}) else {
return;
};
// Existing navigation guards own pending behavior forms. Never replace
// their owner/camera if an exceptional caller leaves one on another page.
if self.behavior.has_pending() {
return;
}
self.layer = layer;
self.page = Page::Behavior;
self.behavior.active_owner = Some(machine);
self.behavior.diagram = behavior::state_view::State {
diagram: Some(diagram),
placement: self.project().diagrams[&diagram]
.nodes
.values()
.find(|node| node.id == self.selected || node.element == self.selected)
.map(|node| node.id),
..Default::default()
};
self.selected_node = None;
self.canvas_epoch = self.canvas_epoch.wrapping_add(1);
self.fit_state_diagram();
}
/// The behavior view resolved independently of the current page. Capture
/// this before selection/layer changes, while it still identifies the view
/// whose camera and tool are retained during navigation.