Files
Ferdinand Thiessen a8a05ba3ee refactor(workflowengine): migrate to Vue 3
The app is built by the Vue 3 toolchain from here on: the entry mounts with
createApp(), every component uses `<script setup lang="ts">` and CSS modules,
and the shipped checks are registered as custom elements through
defineCustomElement() instead of the wrapper that faked away the shadow root.

Notable consequences of the engine change:

- Vue never attaches an `onUpdate:*` listener to a DOM element, taking it for
  the v-model listener of a component, so the events of a check element are
  subscribed to directly through useCustomElementEvents(). The protocol itself
  is unchanged: Vue dispatches both `update:modelValue` and the hyphenated
  name, and the host keeps listening for the hyphenated one.
- `disabled` is only passed to a check element when it applies, because on a
  dashed tag Vue writes the literal string "false", which reads as truthy.
- Styles are no longer injected by the bundle, so the settings page has to
  load the app stylesheet like every other Vue 3 app does.
- moment-timezone is replaced by Intl. Zones of saved rules keep validating
  even when they are no longer offered, e.g. legacy aliases.

Filter rows are keyed by the check they render and derive their filter and
comparator from it, so removing a row no longer leaves its neighbour showing
the removed filter. The three "predefined value or custom text" checks share
one component, and the removed `component`/`options` plugin path now logs an
error naming the plugin instead of rendering.

Signed-off-by: Ferdinand Thiessen <opensource@fthiessen.de>
Assisted-by: ClaudeCode:claude-opus-5
2026-09-30 17:16:14 +02:00
..