Live diagnostics for Stimeo UI stimeo--* markup in
HTML/ERB — the same engine as npx -y stimeo-ui check, running as you type.
Stimeo UI is a headless Stimulus UI framework for Ruby on Rails: behavior-only,
accessible components driven by HTML attributes.
- Unknown names with "Did you mean …?" hints: controllers, targets, values,
and
data-actionmethods. - Structure: missing required targets, orphan targets.
- Accessibility: author-supplied ARIA the controller cannot add at runtime (missing or invalid values), keyboard-focusability prerequisites, and controller-managed ARIA you should not hardcode.
- Quick fixes (💡): unambiguous corrections — a typo'd controller/target/ action/idref token, a single-valued ARIA attribute — apply in one click.
- Completions: controller identifiers inside
data-controlleranddata-action, target names insidedata-stimeo--*-target, action methods after#— all driven by the manifest, so they always match the installed version. - Hovers: the full authoring contract of any
stimeo--*identifier under the cursor — targets (with required ones), value/action/event names, and the accessibility, keyboard, and controller-managed-ARIA requirements the Inspector checks.
No language server and no setup: the checker is bundled into the extension
and works out of the box. Diagnostics carry the same stable codes as the CLI
(unknown-controller, missing-aria, …), so data-stimeo-ignore opt-outs
behave identically.
Manifest resolution
Diagnostics, completions, and hovers are driven by the controller manifest, resolved per document:
stimeo.manifestPath(explicit) — when set, always used (absolute, or relative to a workspace folder).- Nearest workspace install (preferred) — walking up from the document's
directory to its workspace root (ESLint-style), the first
node_modules/stimeo-ui/dist/inspector/manifest.jsonwins. A Rails app nested inside a monorepo is checked against its own installed version, not a sibling's. Single files opened without a workspace walk up to the filesystem root. - Bundled snapshot (fallback) — the manifest captured when the extension was built.
A manifest whose shape the bundled engine cannot consume (e.g. a much older
package version) is skipped in favor of the next tier instead of breaking
diagnostics. Installed manifests are watched, so an npm install upgrade
re-checks open documents automatically; if your setup excludes node_modules
from file watching (files.watcherExclude), run “Stimeo UI: Reload
manifest” from the command palette instead. The "Stimeo UI" output channel
logs which manifest is active.
Settings
| Setting | Default | Effect |
|---|---|---|
stimeo.enable |
true |
Toggle all features from this extension. |
stimeo.manifestPath |
"" |
Explicit manifest to check against; overrides automatic resolution. |
Commands
| Command | Effect |
|---|---|
| Stimeo UI: Reload manifest | Re-resolve the manifest and re-check open documents (see “Manifest resolution” above). |
Feedback
Bug reports and feature requests: taiyaky/stimeo-ui/issues.
License
MIT © Stimeo Labs — the same license as the stimeo-ui library itself.