Skip to content

Bridge Releases

Release notes sourced from the Devtools Bridge package changelog (Changesets).

Source: packages/devtools-bridge/CHANGELOG.md

  • #152 c805d79 - Protocol v8. The serialized snapshot’s machine object narrows to { outcome }: the six derived booleans it used to carry — isLoading, plus one per status — each restated status or transition.pending, and no panel ever read them.

    The supported version window shifts to 8 / 7 / 6. A v7 emitter stays supported and can still drive mutations; v6 becomes read-only; v5 is no longer supported.

    The "headless" machine mode is retired from isMachineMeta, as its own TODO asked. mode is snapshot.type and has only been "linear" | "graph" since the mode left JourneyDevtoolsMachineMeta.

  • #152 c805d79 - Replace the command-specific 1.0.0-rc.2 bridge with protocol v7 and align it with the final Core snapshot and machine contracts.

    • Register machine capabilities as generic feature and operation descriptors. Each operation declares its id, label, description, mutation flag, output kind, and typed input fields; invocation returns a structured snapshot, data, text, or void result, or a serialized operation error.
    • Expose lifecycle, navigation, context patching, snapshot inspection, and graph event dispatch as standard operation descriptors. Graph machines are detected by the presence of send, and eventTypes can advertise the complete declared event set to the panel.
    • Replace commandsEnabled with mutationsEnabled. Mutating operations currently default to enabled whenever the bridge itself is enabled; set this option to false to expose read-only inspection. Add configurable operation rate limiting, defaulting to 100 operations per 10 seconds. Remove the old pluginMetadata option; plugin state now travels through the machine snapshot.
    • Update transported snapshots to the Core V1 shape: the linear/graph discriminator, timeline history, current-step async state, namespaced plugin state, outcomes, and enabled graph events are preserved instead of translated into the legacy computed shape. Nested runtime errors are serialized with their name, message, stack, and cause instead of collapsing to empty objects.
    • Emit protocol version 7. Version 6 invoke envelopes remain accepted because their generic invoke shape is identical; version 5 register traffic is tolerated for discovery but cannot invoke v7 operations.
    • Harden the window boundary with source, origin, channel, version, payload depth, and payload size validation. Reject unknown operations, invalid inputs, disabled mutations, rate-limit excess, and stale post-detach traffic with structured operation errors where applicable.
    • Handle replay requests directly in each attached bridge, support multiple machines, and isolate bridge subscription failures from machine transitions.
    • Export buildOperationRunners, createJourneyMachineId, OperationRateLimiter, serializeSnapshot, protocol guards/constants, and the full protocol descriptor/envelope types.
    • Add an explicit engines.node >=20.11.0 package requirement.
    • Rewrite the bridge documentation and generated API reference for protocol v7.

    Consumers with a custom panel or protocol client must migrate from legacy command envelopes and the old computed snapshot shape to generic invoke / operationResult / operationError envelopes.

  • #139 51c20e6 - Drop the DevTools feature-comparison table from SECURITY.md and state the bridge’s transport and isolation behaviour directly. Documentation only.

  • #131 5a7c344 - Broaden the npm keywords

    Adds devtools-extension, inspector, time-travel, diagnostics and observability. This package is found by somebody debugging a flow that is already misbehaving, which is a different search from the one that finds the runtime, and the registry was answering only the second. No code changes.

  • Updated dependencies [c805d79, c805d79, c805d79, c805d79, c805d79, c805d79, c805d79, 3893a1b, c805d79, c805d79, c805d79, c805d79, c805d79, c805d79, c805d79, 5a7c344]:

    • @rxova/journey-core@1.0.0
  • #131 5a7c344 - Broaden the npm keywords

    Adds devtools-extension, inspector, time-travel, diagnostics and observability. This package is found by somebody debugging a flow that is already misbehaving, which is a different search from the one that finds the runtime, and the registry was answering only the second. No code changes.

  • Updated dependencies [5a7c344]:

    • @rxova/journey-core@1.0.0-rc.3
  • Align the DevTools bridge package with the 1.0.0-rc.2 release.

  • Updated dependencies

    • @rxova/journey-core@1.0.0-rc.2
  • Updated dependencies [1cdde02]
    • @rxova/journey-core@1.0.0-rc.1
  • 239f7c5: ## What changed

    • Snapshot delivery is now coalesced to one animation frame, with a timeout fallback when requestAnimationFrame is unavailable. This reduces burst traffic when machines update rapidly.
    • Pending scheduled snapshots are canceled on detach, so the bridge no longer emits stale state after teardown or disconnect.
    • Command results now preserve the core runtime’s non-throwing failure model by returning serialized error data inside normal commandResult envelopes instead of treating every failed transition as a transport exception.
    • Environment detection is broader and safer. The bridge now prefers import.meta.env.DEV / import.meta.env.PROD, falls back to process.env.NODE_ENV, and defaults to disabled when neither signal exists.
    • That environment change makes Bun-based and browser-first bundler setups behave more predictably without assuming a Node-style runtime.
    • Serialization and protocol validation were hardened. Payloads are cloned and sanitized more defensively, validation now does a single size check plus a structural safety walk, and unsafe, circular, or oversized payloads are rejected more consistently.
    • Internal bridge logic was cleaned up to remove duplication in an already environment-sensitive codepath, reducing the chance of behavior drift between similar branches.
    • README, docs, and security guidance were updated with Bun install notes, explicit enablement guidance for runtimes without env signals, and CSP expectations for browser apps using the bridge.
    • Test coverage was expanded around protocol safety, serialization edge cases, bridge detach behavior, and command/result handling.
    • Protocol payload validation is stricter. Consumers relying on previously accepted oversized, circular, or structurally unsafe payloads may now see those envelopes rejected.
  • Updated dependencies [239f7c5]
    • @rxova/journey-core@0.7.0
  • 4ee201f: Per-package patch notes:

    • @rxova/journey-devtools-bridge
      • Guarded bridge transport posting with a safe try/catch so window.postMessage failures are swallowed.
      • Prevents bridge lifecycle/command flows from throwing when browser messaging is unavailable or rejects.
    • @rxova/journey-react
      • Memoized provider context value in Provider to keep stable references when machine/journey inputs are unchanged.
      • Reduces unnecessary rerenders for memoized consumers during unrelated parent rerenders and StrictMode churn.
    • @rxova/journey-core
      • Added listener-churn edge coverage to verify snapshot/event subscriptions are fully removed after unsubscribe.
      • Hardens regression protection around subscription retention behavior.
  • Updated dependencies [4ee201f]

    • @rxova/journey-core@0.6.4
  • 99a6635: Added a new public API TSDoc quality gate (docs:api:check) that verifies callable exports from package entrypoints have TSDoc summaries.

    • Enforced that check in CI/docs workflows and documented it in contributor/docs guides.
    • Added the checker implementation and comprehensive tests for pass/fail/CLI behavior.
    • Added/updated TSDoc on key public exports:
      • core transition builders (tx, createTransitions)
      • react bindings factory (createJourneyBindings)
      • devtools bridge attach + protocol envelope/command validators
    • No runtime behavior changes; this branch is primarily API documentation quality/tooling hardening.

    @rxova/journey-core

    • Added TSDoc summaries for public transition helpers (tx, createTransitions).
    • Added tests for the new API TSDoc checker (check-public-api-tsdoc) under core tests.
    • No runtime behavior changes.

    @rxova/journey-react

    • Added a TSDoc summary for createJourneyBindings (public React API entrypoint helper).
    • No runtime behavior changes.

    @rxova/journey-devtools-bridge

    • Added TSDoc summaries for public bridge/protocol APIs (attachJourneyDevtools and envelope/command validators).
    • No runtime behavior changes.

    apps-docs

    • Documented the new API docs quality gate (pnpm run docs:api:check) in the docs README.
    • No end-user docs content changes beyond contributor/developer guidance.

    repo/tooling (cross-package)

    • Added docs:api:check script to root package.json.
    • Added scripts/check-public-api-tsdoc.ts to enforce TSDoc coverage on public callable exports.
    • Wired this check into CI/docs workflows and contributing guidelines.
  • Updated dependencies [99a6635]

    • @rxova/journey-core@0.6.3
  • 6a38c50: - Tightened core machine typing by introducing JourneySendEvent and removing unsafe as unknown/as never casts in convenience APIs.
    • Replaced JourneyStepDefinition’s open Record<string, unknown> escape hatch with explicit typed step extensions.
    • Added runtime validation in devtools bridge for command stepId values (goToStepById, updateStepMetadata, clearStepError), returning commandError for unknown steps.
    • Added/updated tests for type coverage and bridge invalid-step behavior.
    • Added JSDoc to key public core types (including transition/event builder generics) and improved type readability with JourneyGoToStepByIdEventType.
  • Updated dependencies [6a38c50]
    • @rxova/journey-core@0.6.2
  • Updated dependencies [7be5e0c]
    • @rxova/journey-core@0.6.1
  • 56234c2: Improve docs across Core, React, and Devtool Bridge, including API restructuring, clearer runtime semantics references, and TypeScript-focused guidance.
  • Updated dependencies [56234c2]
    • @rxova/journey-core@0.6.0
  • 16db5e3: Journey 0.5.0 is a full platform-level upgrade across core runtime, React bindings, and devtools. This 0.5.0 release focuses on deterministic flow behavior, stronger typing, cleaner APIs, and better observability/debuggability.

    • New canonical snapshot shape with history.timeline + history.index pointer model.
    • Deterministic pointer navigation APIs: goToPreviousStep(steps?), goToLastVisitedStep().
    • Convenience helpers: goToNextStep(), completeJourney(payload?), terminateJourney(payload?).
    • Built-in fallback semantics for back/goToPreviousStep event sends when no explicit transition matches.
    • Strongly typed transition builder ergonomics via createTransitions and tx helpers (toComplete, toTerminate, branching builders).
    • First-match-wins transition execution preserved and clarified for reliability.
    • Typed async transition phases exposed in snapshot: idle, evaluating-when, error.
    • Metadata is now first-class at runtime via snapshot.stepMeta and updateStepMetadata(stepId, updater).
    • Typed observability stream via subscribeEvent(...) with lifecycle/navigation/metadata events.
    • Expanded persistence model with versioning/migration support and safer hydration of invalid data.
    • v1 top-level timeline / index snapshot fields removed.
    • HISTORY_TARGET removed.
    • Legacy history helpers removed (trimHistory, clearHistory, overflow options).
    • Persistence now targets v2 snapshot structure and should be migrated with migrate(...) when needed.
    • Bindings-first architecture is now the default.
    • createJourneyBindings(journey) returns typed Provider, StepRenderer, useJourneyApi, useJourneySnapshot, and useJourneyMachine.
    • Journey typing is captured once at bindings creation time; hook callsites no longer need per-call generics.
    • useJourneyApi() now delegates to machine-level navigation helpers (goToNextStep, completeJourney, terminateJourney, pointer APIs).
    • Imperative jumps remain available using event send: api.send({ type: "goToStepById", stepId }) and api.send({ type: "goToStepById", stepId, payload }).
    • resetOnJourneyChange behavior is explicitly supported for intentional machine resets when journey definition identity changes.
    • Legacy global React hooks/components API removed in favor of bindings-first usage.
    • goToStepById(...) is no longer a dedicated useJourneyApi helper; use api.send({ type: "goToStepById", ... }).
    • Existing apps that called old global hooks/components or helper methods must migrate to bindings APIs.
    • Protocol remains version 3 (no protocol version bump in this release).
    • Richer command set for runtime control: goToNextStep, terminateJourney, completeJourney, goToStepById, goToPreviousStep, goToLastVisitedStep, updateStepMetadata, send, resetJourney, clearStepError.
    • Snapshot payloads now include full v2 runtime state: currentStepId, history.timeline, history.index, context, visited, stepMeta, status, async.
    • Safer runtime defaults: bridge enabled by default in non-production; disabled by default in production unless explicitly enabled; commands disabled by default in production unless explicitly enabled.
    • Consumers should align command/snapshot assumptions with current protocol v3 shape.
    • Tooling relying on old snapshot/history shape must migrate to history.timeline and history.index.
    • Update core snapshot reads from v1 fields to v2 fields (snapshot.timeline -> snapshot.history.timeline, snapshot.index -> snapshot.history.index).
    • Replace removed history APIs (trimHistory, clearHistory, overflow options) with pointer navigation APIs.
    • Migrate persisted snapshots to v2 shape (or provide persistence.migrate).
    • Move React usage to bindings-first patterns (createJourneyBindings + bound hooks/components).
    • Replace api.goToStepById(...) calls with api.send({ type: "goToStepById", ... }).
    • Update devtools integrations to current protocol v3 command/snapshot structures.
    • This release is intentionally comprehensive and includes updated docs, examples, devtools integration notes, and test coverage for the new model.
    • Package versions are set to minor so the fixed published package group bumps from 0.4.0 to 0.5.0.
    • App package versions are also aligned to 0.5.0 for apps-docs and apps-devtools.
  • Updated dependencies [16db5e3]
    • @rxova/journey-core@0.5.0
  • 176007f: - Added full Chrome DevTools extension app
    • Added new bridge package with protocol + bridge runtime.
    • Added/expanded demo integration to exercise DevTools + bridge flows.
    • Added Devtool documentation section.
    • Updated docs UX in index.tsx, sidebars.ts, and search styling in styles.module.css.
    • Added CI/CD workflows for docs/devtools and Chrome Web Store publishing in devtools.yml, devtools-publish.yml, docs.yml.
    • Updated release/versioning config in config.json and scripts in package.json (pnpm run releases).
    • Updated README files across packages.
  • @rxova/journey-core@0.4.0