StateScope
Read, diff, and review .emx finite state machines without leaving VS Code.

StateScope turns an XMI / UML2 .emx model into an interactive state diagram you
can read, search, and review — with a model-aware diff and a no-checkout PR review
flow. Opaque XMI becomes a navigable view, right next to your code.
What's an .emx file? A standards-based XMI /
UML2 document describing a state machine. Common
in regulated and embedded domains where a visual model is the source of truth.
Features
Three views of every model
| Tab |
What it shows |
| Diagram |
Interactive UML state diagram. Pan, zoom, fit. Click any state or transition to inspect it; a transition into another FSM becomes a handoff pill you can double-click to follow. |
| Table |
Flat transition table — event, guard, action, target. Sortable and filterable. |
| Model |
Related model data — participants, channels, queues, and stereotypes. |
The properties panel stays open with FSM-level context, or pin any state,
transition, or chip. Search with ⌘F / Ctrl+F across states, events, actions,
channels, queues, and mappers; type / to scope to one kind (e.g. /queue).
Compare & review
- Compare any two branches, refs, or files — or auto-diff against your last commit.
- Review a PR without checking it out: pick the branches and step through every
changed
.emx, with A / M / D badges in the Explorer.
- Flip the diff direction in place; focus mode shows only changed states and their
neighbours.
Richer context (automatic)
- When companion model data is available, StateScope adds classification chips,
action details, referenced-by lists, and channel/queue context — and degrades
gracefully when it isn't.
Catch problems early (optional)
- Flags broken references, unreachable states, and missing descriptions in the
Problems panel. Off by default; severities are configurable.
Getting started
Open any .emx file — it opens in StateScope automatically (.uml and .xmi
models open the same way). The diagram paints right away; companion details
stream in a moment later. Everything else lives in the Command Palette under
StateScope:.
| Supported file |
|
.emx |
XMI / UML2 state-machine model — the primary format |
.uml, .xmi |
The same XMI / UML2 content under other common extensions |
Commands
| Command |
What it does |
| Open in StateScope |
Open the active file in the viewer |
| Compare with Branch / Ref… |
Diff the model against another branch or ref |
| Compare with File… |
Diff against another file on disk |
| Clear Compare Overlay |
Drop the active diff |
| Review a PR… |
Step through every model a PR changes, no checkout |
| End PR Review |
Exit review and restore your working copy |
| Open at PR Source Ref |
Open the current file at the PR's source ref |
| Create Support Bundle |
Generate a Markdown report for support requests |
Trust
- Works fully offline — no telemetry, no analytics, no phone-home. The only network
activity is the
git fetch you trigger by comparing against a remote ref.
- Read-only: StateScope never modifies your
.emx files.
- Suitable for regulated and air-gapped environments.
A support bundle (StateScope: Create Support Bundle) includes only extension,
VS Code, and diagnostic metadata — never your model contents.
StateScope is a third-party viewer for an open standard, with no affiliation to any
tool vendor.
License
PolyForm Noncommercial 1.0.0 — free for personal, research,
educational, and other noncommercial use. Commercial use requires a separate
commercial license.