Skip to main content

Release evidence

Track the evidence behind the first release candidate.

Release evidence

This page records executable evidence. It is not a promise that automated tests replace manual accessibility review.

1. Definition and controller kernel

Implemented: literal-preserving definitions, validation, application-scoped registry, linear navigation, conditions, transition locking, aborts, cleanup, events, and typed errors. Use fake route and target adapters in focused tests.

Acceptance: the controller journeys in the runtime specification pass without a DOM or Nuxt application.

2. Vue runtime and semantic targets

Implemented: createTourPlugin(), useTour(), useTourTarget(), app-bound directives, bounded waiting, and effect-scope cleanup. The /vue export is verified from the packed artifact.

Evidence: focused tests use two Vue applications, duplicate semantic IDs, late-rendered targets, SVG targets, target replacement, host teardown, and injection inside lifecycle callbacks.

3. Accessible host

Implemented: TourHost, TourContent, one spotlight, default card, full-card slot, focus behavior, interaction modes, structural CSS, and reduced motion. Add Floating UI in this slice because this is the first code that uses it.

Evidence: focused DOM tests cover naming, focus, inertness, nested Escape, target interaction, reduced motion, dark mode, and custom-card slots. Real browser journeys cover the high-risk behavior and viewport constraints.

4. Nuxt-native integration

Implemented: the Vue runtime, router adapter, auto-imports, components, and CSS. Discover each Nuxt layer's app/tours files using the project's configured extensions. Generate the registry and application-specific tour, step, and target ID declarations. Add and unlink events regenerate only those templates.

Evidence: the README shape builds without runtime imports; valid IDs infer; invalid tour, step, and target IDs fail type checking; layer overrides and cross-route tours pass.

5. Documentation and release candidate

Release-candidate work includes verified user documentation, a clean packed consumer, package-size review, and the browser matrix.

The release gate runs lint, positive and negative type checking, unit and Nuxt integration tests, module and documentation builds, a five-project Playwright matrix, and a clean Nuxt build installed from the packed tarball. A focused consumer matrix checks the declared Nuxt 4.0 and Vue 3.5 floors as well as the current framework lines, supported Node boundaries, and a Windows consumer. It does not repeat the full documentation and browser gates. The browser journey covers route and Suspense settlement, a per-frame shading probe, target replacement, nested Escape, focus restoration, host removal, external navigation, browser Back, reduced motion, and dark mode.

Manual keyboard, VoiceOver, NVDA, and touch-screen-reader checks remain human launch gates and must be recorded with browser, operating system, and date.

Frozen version 1 decisions

  • Target waiting defaults to 5000 ms and missing targets fail.
  • cancel(reason) accepts an application-owned string.
  • The default theme exposes only the CSS variables used by the shipped card and follows system, class-based, or data-theme light/dark modes.
  • Nuxt augments the stable @lupinum/nuxt-tour/registry type boundary from direct definition imports.
  • Nuxt 4 and Vue 3.5 or newer are the supported framework floor.