Umlay — VS Code Extension
🌐 Japanese support page: https://umlay.keydrop.net/vscode/
Umlay is a text-first UML / ER modeling DSL.
This extension brings the full Umlay experience into VS Code: syntax
highlighting, live diagnostics, hover, completion, F12 navigation, F2
rename, ⌘. quick fixes, ⇧⌥F formatting, and a React-based diagram
preview that mirrors the web editor.
Features
Language server (always on)
- Live diagnostics — parse errors plus 61 lint rules covering spec
1.10 (L001–L064 + S/W/C/R rules). New for spec 1.10: L059–L064 for
@flowchart_diagram views. Mode switchable via
umlay.diagnostics.mode (draft / beta / strict).
- Hover — model intent,
@@doc / @@md Markdown bodies, attribute
table.
- Go to Definition (F12) — jumps from
@ref(User.id) and dotted
type references to the declaring model / enum / view.
- Completion — context-aware: keywords, primitive types, stereotypes
(after
@), block directives (after @@), view kinds, @ref
targets, and include: globs.
- Document Symbols — namespace → model / enum / view hierarchy for
the Outline panel and breadcrumbs.
- Rename (F2) — renames model / enum names file-wide.
- Quick Fix (⌘.) — one-click fixes for common lint findings.
- Format Document (⇧⌥F) — canonical whitespace, attribute order,
and directive ordering.
Preview (React webview)
Open from the editor title-bar icon, or Umlay: Open Preview to the Side in the Command Palette.
- View tabs — one tab per
view declaration, plus All (stacked
grid) and Document (IR-derived Markdown with inline SVG).
- Zoom & pan — wheel zooms anchored to the cursor, drag to pan,
keyboard shortcuts
+ / - / 0 / F. Per-view scale persists
across reloads.
- Click → jump — click any model / task / participant in the
diagram and the editor reveals that declaration.
- Diagnostics sidebar — parse + lint findings grouped by severity.
Click an entry to reveal the matching source line.
- Theme aware — light, dark, and high-contrast all switch the
diagram palette automatically.
DSL support
- File extensions:
.umlay (plain) and .umlay.md (literate —
```umlay fenced blocks inside Markdown).
- 12 view kinds —
@er_diagram, @class_diagram, @sequence_diagram,
@component_diagram, @deployment_diagram, @package_diagram,
@state_machine, @activity_diagram, @wbs_diagram, @gantt_chart,
@composite, and @flowchart_diagram (new in spec 1.10 / RFC 0055
— classic flowcharts with start / end / process / decision /
io / document / subroutine shapes inside a flow { ... } block).
- Built-in snippets:
imodel, ient, ienum, iview, iseq,
igantt, iref, imd, idoc, idep, isample, iimpl,
icritical, and more.
- Syntax highlighting for
.umlay directly, plus Markdown injection so
.md files show Umlay fences highlighted.
Localization
The extension ships in English by default and Japanese when VS
Code's display language is ja. Commands, settings, and runtime
messages are all translated.
Quickstart
- Install the extension.
- Open or create a
.umlay file.
- Start the preview (title-bar icon or Command Palette →
Umlay: Open Preview to the Side).
- Edit — every keystroke re-parses, re-renders, and re-lints
automatically.
Example
namespace shop
enum OrderStatus { DRAFT, CONFIRMED, SHIPPED, CANCELLED }
event OrderConfirmed { orderId UUID!; at Timestamp! }
model Order @aggregate_root @intent("最小の顧客発注") {
id UUID! @id
status OrderStatus! @states(initial: DRAFT, final: [SHIPPED, CANCELLED])
total decimal! @inv("total >= 0")
fn confirm()
@pre("status == DRAFT")
@post("status == CONFIRMED")
@emits(OrderConfirmed)
}
view er @er_diagram { include: shop.* }
view order-life @state_machine { include: shop.Order, shop.OrderStatus }
Settings
Open VS Code settings and search for umlay. to find all configurable
options. Highlights:
| Setting |
Default |
Purpose |
umlay.diagnostics.mode |
draft |
Lint mode. strict promotes more rules to errors. |
umlay.diagnostics.disabledRules |
[] |
Silence specific lint codes (e.g. ["L001"]). |
umlay.diagnostics.severityOverrides |
{} |
Per-rule severity remap, e.g. { "L008": "warning" }. |
umlay.diagnostics.autoFixOnSave |
false |
On save, apply quick-fixes for L001 / L002 / L008. |
umlay.preview.autoRefresh |
true |
Re-render the preview when the source file changes. |
umlay.preview.refreshDebounceMs |
300 |
Coalesce rapid edits before re-rendering. |
umlay.preview.theme |
auto |
Color theme — follows the editor by default. |
umlay.preview.defaultTab |
auto |
Tab to focus when the preview opens. |
umlay.preview.tabIcons |
true |
Show kind icons (📊 / 🧩 / 💬) on tabs. |
umlay.preview.showDiffSummary |
true |
Show baseline-diff strip between tabs and canvas. |
umlay.preview.showDiagnosticsSidebar |
true |
Show the right-side Diagnostics panel. |
umlay.preview.diagnosticsSidebarWidth |
280 |
Width of the Diagnostics panel (px). Drag the splitter to update. |
umlay.document.showInlineDiagrams |
true |
Embed each view's SVG below the Document tab's Views TOC. |
umlay.document.maxInlineDiagramSize |
524288 |
Per-diagram byte cap for inline rendering. |
umlay.document.density |
comfortable |
comfortable / compact spacing. |
umlay.document.showStereotypeBadges |
true |
Show colored stereotype chips next to model names. |
umlay.render.showReviews |
true |
Embed @review / @fix annotations in ER and class boxes. |
umlay.render.allViewsLayout |
grid |
grid / column / row for the All Views tab. |
umlay.render.zoomBehavior |
lastSaved |
Per-view initial zoom: fit, actual, or lastSaved. |
umlay.format.attributeAlignment |
none |
none (single space) or column (pad name + type). |
umlay.parse.specVersion |
auto |
Cap the spec version, e.g. 1.8 to flag newer spec usage. |
umlay.export.defaultFormat |
svg |
Pre-select svg or png in the export quick pick. |
umlay.export.defaultDpi |
144 |
DPI for PNG export (72–600). |
Commands
| Command |
Description |
Umlay: Open Preview |
Preview in the current column |
Umlay: Open Preview to the Side |
Preview in a split column |
Umlay: Export Diagram as Image… |
Export one view or all views as SVG / PNG |
Umlay: Reset Diff Baseline |
Start a fresh review cycle |
Umlay: Refresh Preview |
Force re-render every open preview |
Installation
From the Marketplace
Search for "Umlay" in the Extensions panel, or:
code --install-extension Umlay.umlay
From a .vsix file
code --install-extension umlay-<version>.vsix
Or in VS Code: Extensions → … menu → Install from VSIX…
Links
License
Apache-2.0. See LICENSE.
| |