Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
7 changes: 5 additions & 2 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -49,9 +49,10 @@ OpenMBEE View Editor brings source editing, named model views and reviewed graph
- **Edit highlighted SysML source.** CodeMirror provides line numbers, bracket matching/closing, indentation, find/replace and draft undo/redo. Apply or discard changes, undo/redo accepted source transactions, and keep the last valid model when a draft fails validation.
- **Query the draft model.** Request engine-backed completion, symbol information and project-file definitions against the complete current source set.
- **Inspect requirement graphs.** Browse requirement definitions/usages, declared identifiers and documentation, typing, hierarchy and positive/negated satisfaction links. Follow exact source declarations; diagram links do not report executed test results.
- **Read authored attribute values.** See source expressions on attribute nodes, general-view card previews and effective structural compartments, with full expressions and provider declarations in the Inspector. Unresolved binding or precedence cases are explained rather than displayed as calculated values.
- **Open source-defined views.** Navigate named SysML views independently of the active source file. Inspect nested and inherited parts, typed inherited ports and resolved connection endpoints.
- **Navigate source issues.** Open an issue’s reported file and line in the source editor. Missing or stale locations are explained while drafts and the last valid diagram are retained.
- **Browse the model hierarchy.** Expand packages, definitions and declared members in the Model tree. Inspect type/kind labels; use arrow keys, type-ahead and Enter/Space to navigate and select.
- **Browse the model hierarchy.** Expand packages, definitions and declared members in the Model tree. Selection opens Inspector details. Inspect type/kind labels; use arrow keys, type-ahead and Enter/Space to navigate and select.
- **Review graphical changes.** Rename parts, create native views, add typed part usages and connect compatible directed ports through an exact source-change preview.
- **Preserve compatible layouts.** Keep verified symbol positions across supported edits, including inactive views. Unsafe identity mappings are reported and arranged again.
- **Keep projects portable.** Download applied source, unfinished drafts and compatible diagram positions together; reopen the bundle or import multiple SysML files.
Expand All @@ -63,6 +64,8 @@ Structural, native requirement and bounded action/state workflows have real-engi

In the source editor, use **Ctrl+F** / **Cmd+F** for find/replace and **Ctrl+Z** / **Cmd+Z** for draft editing undo; **Ctrl+Y** / **Cmd+Shift+Z** redo draft edits. **Tab** moves focus out of the editor. Toolbar **Undo source** / **Redo source** operate on accepted model revisions. Highlighting is lexical; the pinned engines still validate source when you apply it. Use **Ctrl+Space** for engine-backed completion, **F1** for symbol information and **F12** for project-file definitions; pointing at a symbol also requests hover information. Queries use the complete current draft source set. Unsupported completion edits and stale replies are rejected. Formatting and inline diagnostics remain future work.

**Read large views:** large authored trees and interconnections open at a readable scale when fitting the whole graph would reduce zoom below 60%. Pan to continue, choose **Fit view** for an overview, or select a diagram occurrence and choose **100%** to read it. These camera actions preserve source and saved symbol positions.

## Quick start

### 1. Install and run
Expand Down Expand Up @@ -106,7 +109,7 @@ Connection creation currently requires explicit compatible directions and identi

### 4. Inspect requirements and source

Choose **Requirements table** above the diagram to browse applied requirement identifiers, documentation and declared links; search or sort the rows and export CSV. **Traceability matrix** shows satisfaction or verification declarations against linked elements, including explicitly negated links. These are read-only views, not executed verification results. Click a requirement or link to reveal its source; apply or discard a changed draft in that file first.
Choose **Requirements table** above the diagram to browse applied requirement identifiers, documentation and declared links; search or sort the rows and export CSV. **Traceability matrix** shows satisfaction or verification declarations against linked elements, including explicitly negated links. These are read-only views, not executed verification results. Select a requirement or link to open its Inspector details. Choose **Open source** there to navigate to its declaration; apply or discard a changed draft in that file first.

In the source pane, **Find references** (also Shift+F12) lists project reference locations. **Format source** formats the current draft with Toolkit. Formatting supports local editor undo; **Apply source** validates and accepts it into source history. Failed or stale queries retain your work.

Expand Down
2 changes: 1 addition & 1 deletion docs/architecture/requirements-data.md
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,6 @@ The workspace checks the applied model and source references again after the asy

The table supports name/identifier/documentation filtering, name sorting and CSV export. The matrix supports satisfaction and verification, with requirements on rows and **linked** elements on columns. Matrices above 10,000 cells require narrowing the requirement search before display/export. Unlinked requirements remain rows; this first version does not enumerate all possible satisfiers, edit relationships, compute transitive links or infer compliance. Repeated local names remain separate by exact declaration identity. Multiple declarations in one cell remain separate, including negated assertions.

Selecting a row, column or link reveals its exact recorded declaration. Source reveal is refused when that file's draft differs from applied source, rather than applying an old byte range to new text. The diagram stays mounted while data is shown, retaining its camera and presentation. CSV and read-only display settings do not alter the portable version-1 bundle.
Selecting a row, column or link opens Inspector details without changing the active file, editor mode or draft. Requirements include their declared identifier and documentation; anonymous links retain their recorded declaration identity. **Open source** is a separate action, enabled only for a current model's recorded origin whose file draft still matches applied source. UTF-8 origins are bounds-checked and converted to editor positions without guessing a location from a display name. The diagram stays mounted while data is shown, retaining its camera and presentation. CSV and read-only display settings do not alter the portable version-1 bundle.

Selecting a named view returns to the diagram. Successfully opening or restoring a project also starts in diagram mode; failed operations retain the current representation.
14 changes: 13 additions & 1 deletion docs/architecture/structural-views.md
Original file line number Diff line number Diff line change
Expand Up @@ -55,7 +55,7 @@ React Flow uses parent-relative coordinates internally. The workspace and versio

Restoration converts compatible absolute positions back to parent-relative positions. A saved child position outside its current owner's bounds is arranged again with an explicit notice, including incompatible positions from the older flat renderer. Reviewed source transactions and bounded source edits now reconcile declaration origins and complete usage contexts across revisions. Compatible positions are retained per view; unsafe or missing matches are invalidated explicitly. [Identity policy](identity-reconciliation.md).

Children remain within their displayed owner's content area. Group movement carries its descendants; overlap avoidance after manual movement, parent resizing, route editing and layout undo are not implemented. Mode/viewport size changes refit the available canvas without triggering a refit on ordinary symbol movement. Modeled coordinates or routes remain explicitly unavailable in this renderer.
Children remain within their displayed owner's content area. Group movement carries its descendants; overlap avoidance after manual movement, parent resizing, route editing and layout undo are not implemented. Explicit Code/Split/Diagram mode changes choose the available initial camera; ordinary viewport/panel resizing and symbol movement retain the camera. Modeled coordinates or routes remain explicitly unavailable in this renderer.

## Evidence and limits

Expand Down Expand Up @@ -88,3 +88,15 @@ Named interconnection diagrams now supply ELK with native port identities, physi
Physical handle tips remain the visible endpoints. Direct links retain orthogonal bends when those endpoints differ from layout points. Routes and labels follow container translation during assembly movement; compatible version-1 node positions and semantic endpoints remain independent of generated routes. No source or project-format field is added. Complete obstacle rerouting after arbitrary individual-node movement remains a separate follow-up; this change establishes the generated layout and translated-assembly cases.

The rover regression samples actual SVG geometry against every leaf card and header, plus the entire rectangle of each compound unrelated to the connection's native endpoints. This explicitly prevents unrelated power/command lines passing through inspection's empty interior. It checks ten named labels, overlap/viewport bounds and orthogonal sections, then verifies exact source and positions through assembly movement and portable reopen. Desktop/narrow captures cover both themes.

## Source-backed attribute expressions

The bridge adds optional `sourceAttribute` metadata to attribute nodes and `sourceAttributes` to effective attribute compartments after exact correspondence is built. Each row retains its declaration subject, complete usage context, exact applied declaration text and optional semantic type. An available value carries raw authored expression bytes, their origin within a separately identified provider declaration, default/initial flags and own/redefined provenance. An absent expression is distinct from unsupported resolution and from an older worker supplying no metadata. Expressions, references, strings and units are displayed without evaluation.

The resolver verifies local/explicit nested and qualified redefinitions by semantic identity, with cycle, ambiguity and missing-source guards. External bindings/assignments and unresolved applicable paths remain unsupported with their exact source explanation; general binding/default precedence, member values of assigned/reference owners and library constraints are not implemented. AST reference form distinguishes relative local endpoints from namespace-qualified and explicitly external paths, which can otherwise have identical resolved leaf symbols. Unknown cases must not borrow another occurrence's default.

Workspace publication validates declaration identity and bytes, exact node/compartment contexts, unique attributes, provider origin/containment and expression bytes against applied documents. The same checks guard named views, exploration and transaction reconciliation. These are additional derived fields, not version-1 saved-project fields. Existing declaration strings remain as a compatibility fallback.

Diagram labels use bounded previews; the Inspector exposes full expressions, provider declarations and explicit provider-source navigation. Inspection preserves drafts and the active view. Recorded byte ranges are converted to UTF-16 only for unchanged applied files in the current model; source navigation never guesses from a display name. Tree declarations with one current diagram occurrence can inspect that occurrence; repeated occurrences require selecting an exact symbol for usage-specific values.

Readable entry and 100% detail are camera operations. Multi-column packing was investigated against the ADCS assembly; tested ELK compaction/aspect-ratio options did not change its nested column. This slice keeps layout, routing and saved positions intact, exposes an overview/detail path and does not claim every large graph is simultaneously legible. See the [verification record](../verification.md) for measured outcomes and limits.
6 changes: 3 additions & 3 deletions docs/architecture/workbench-layout.md
Original file line number Diff line number Diff line change
Expand Up @@ -6,13 +6,13 @@ The workbench composes owned shadcn Resizable, Tooltip and Popover primitives ar

Explorer and Inspector resize beside the central editor. Source and Diagram share an adjustable divider in Split mode. Below 900 px the editor split becomes vertical. Issues is a separate, resizable bottom dock. Defaults collapse Inspector on a fresh narrow viewport; an edge rail can reopen it. Header options offer Narrow/Widen or Shorter/Taller without dragging, and Workspace layout offers source/diagram share controls and Reset layout.

Each side panel remembers its expanded percentage through collapse and restore. Pixel minimums keep Explorer (145 px), Inspector (190 px) and Issues (96 px) usable; side panels are capped at 420 px and Issues at 60%. The source/diagram panes have horizontal minimums of 160 px for Source and 200 px for Diagram, or 100 px vertically, and their divider cannot collapse an editor while Split mode is selected. The library applies constraints against available space. On screens below 600 px, explicitly opening one side tool collapses the other.
Each side panel remembers its expanded percentage through collapse and restore. Reopening uses that percentage unless it would fall below the tool’s pixel minimum, in which case the minimum is requested without replacing the saved percentage. Pixel minimums keep Explorer (145 px), Inspector (190 px) and Issues (96 px) usable; side panels are capped at 420 px and Issues at 60%. The source/diagram panes have horizontal minimums of 160 px for Source and 200 px for Diagram, or 100 px vertically, and their divider cannot collapse an editor while Split mode is selected. The library applies constraints against available space. On screens below 600 px, explicitly opening one side tool collapses the other.

Dividers have accessible names and library-provided pointer/keyboard behavior. They remain registered in the layout when a tool collapses: removing a divider from layout can invalidate its association with the neighboring panels. The source/diagram divider is disabled outside Split mode. Hidden contents remain mounted and inert, keeping draft text and component state out of keyboard navigation. Single-editor modes reapply their layout when a resize callback reports space retained by the hidden pane after constraint registration. This avoids the old Diagram minimum leaving a blank strip after Split → Code; returning to Split retains the saved share.

Explicit collapse moves focus to the corresponding visible edge-rail reopen control. Explicit reopen returns focus to the panel's collapse button, after the restored content is no longer hidden/inert. New diagnostic/error text opens Issues without taking editor focus. A user can close and reopen that dock independently.
Explicit collapse moves focus to the corresponding visible edge-rail reopen control. Explicit reopen returns focus to the panel's collapse button, after the restored content is no longer hidden/inert. New diagnostic/error text opens Issues without taking editor focus. A user can close and reopen that dock independently. Explicit model, diagram or requirements-data selection opens Inspector without taking desktop focus from the selected item. Below 600 px this transfers focus to the visible Inspector collapse control, because opening it collapses Explorer. Unrelated renders do not reopen a manually collapsed Inspector.

The canvas waits for measured dimensions and initialized nodes before fitting. Explicit Code/Split/Diagram mode changes refit the available diagram, retaining the previous workflow. Dragging dividers or collapsing side tools does not repeatedly fit or arrange nodes, so the user's camera and saved model-space coordinates survive those changes.
The canvas waits for measured dimensions and initialized nodes before fitting. Authored trees/interconnections enter at 100% when a complete fit would be below 60%, with a top-aligned component (rather than empty container space) or centered selected occurrence. Fit view remains an explicit complete-graph overview, and 100% reads the exact selected diagram node or port owner (or the first structural component, then root, when none is selected). Trees allow zoom down to 10%, so an overview is not limited by the old 50% floor. These actions alter only the camera. Explicit Code/Split/Diagram mode changes refit the available diagram, retaining the previous workflow. Dragging dividers or collapsing side tools does not repeatedly fit or arrange nodes, so the user's camera and saved model-space coordinates survive those changes.

## Preferences and preservation

Expand Down
Loading
Loading