Skip to content

walkerOS v4.8.0

Choose a tag to compare

@github-actions github-actions released this 09 Oct 11:25

Changes

The sessionReplay, experiment and engagement descriptions now say that
@amplitude/unified sets up all three plugins on every init and that these
settings only pass options to them, and how Session Replay sampling is decided.
The step examples name the destination config they rely on, and the login
example uses a millisecond timestamp.

Step examples that run with destination settings now name them in their
description (settings.identify, settings.consent), because the docs show
only an example's event, mapping and output, not the settings it runs with.

The context of getMappingValue now requires collector in its type
(Mapping.ValueContext), matching the runtime, which already threw without one.

A failed async cache write no longer escapes as an unhandled rejection on pages
that replace the global Promise, and a * * mapping rule's condition runs
once per event instead of twice. A transformer with code or package that
declares both config.mapping and mapping now gets a warning naming both.

The demo destination's step examples now show the call it really makes: one
log call with the [demo] prefix and the event as indented JSON, instead of
the event object. The package's docs link now points to the destinations
overview instead of a page that does not exist.

format: true now accepts extra keys on user and source (custom user
attributes, GA4 transformer fields, a previous validate verdict), as the types
always allowed. user.optout is typed as a boolean. Unknown top-level fields
and wrong types still fail.

@walkeros/explorer/design/components gains BrowserFrame, a browser window on
the site theme around any page: an address field with the URL, an optional
reload button, a slot for the caller's actions and an optional bookmarks row
that marks the current page. It is sized by its caller and styled by
@walkeros/explorer/styles.css. Icon gains lock, reload and bookmark.

New @walkeros/explorer/design/components export with Button, InlineCode
and EventLegend, styled by @walkeros/explorer/styles.css. Button forwards
tagging attributes to its element and accepts a router link component.

@walkeros/explorer/design/components gains the building blocks of the walkerOS
home page: Icon, InstallCommand, Card, Eyebrow, Stat, Text,
TextLink, CheckList, SectionHeading, ProblemCard, FeatureItem,
FaqItem, PlanCard, CaseCard, HighlightCard, Section, CardGrid,
Split, Cluster, Hero, and the three home page demos (HeroTaggingViz,
ArticleTeaserTracking, DestinationMappingViz). Every design component
forwards tagging attributes to its root.

Explorer components now read the walkerOS design tokens: import
@walkeros/explorer/design/tokens.css beside styles.css. The old theme
variables (--bg-box, --color-text and the rest) are removed. Code panels are
dark in both page themes. Removed exports: lighthouseTheme,
registerLighthouseTheme, palenightTheme, registerPalenightTheme, type
ExplorerTheme, and registerAllThemes, replaced by registerTheme.
ELB_THEME_DARK is now exported.

Explorer now ships the walkerOS design system. Import
@walkeros/explorer/design/tokens.css for colour, type, spacing, radius and
layer tokens (dark by default, light under data-theme="light"), the opt-in
design/base.css, the Tailwind v4 bridge design/tailwind.css, and typed
colour and font constants from @walkeros/explorer/design. A
walkeros-design-check command lints consuming code. Existing exports are
unchanged.

@walkeros/explorer/design/tokens.css now declares every type style as CSS
variables: --type-<style>-size, -line-height, -weight, -family and, when
the style sets one, -tracking. Components can take sizes and weights from the
design system instead of fixed values.

The PromotionPlayground and LiveCode mapping examples show events and
results again, and every failure says so in the box it concerns. Preview takes
a collector instead of elb and captures the page's events through it; its
document carries the design tokens, base rules and design atom styles, so the
demo product card is built from Card, PhotoPlaceholder, Text and Button.
The Playground drops its separate Code box and the labelCode prop: the
Preview's HTML, CSS and JS tabs edit the page. New props: placeholder and
error on CodeBox, error on Box, boxWidth on Grid for one row of
fixed-width boxes.

Add Playground: a tagged component, its event, an editable mapping and the
resulting gtag call side by side, on one real flow (startFlow, the browser
source scoped to a shadow root, and the gtag destination with a stubbed gtag).
@walkeros/web-destination-gtag is now a runtime dependency.

New ViewSource component: wrap a tagged element, hover it and toggle to its
live HTML with the data-elb attributes, edited in place. Back in Visual the
element renders your edit and walkerOS picks up the new tags; a Reset icon
restores the original. New ToggleButton: one button that names the option a
click switches to, at a fixed width.

The warehouse examples of flow-complete.json (Pub/Sub, the warehouse source
and the BigQuery row) now carry the customer segment next to ltv, as the
events upstream do.

Frames belong to a flow: frame_manage (list, page and get) and the CLI frame
reads now take the flowId of the flow they live in. Deleting a flow also
deletes its frames.
A frame read also returns lastSavedVersion, lastSavedNumber and
markupAssetId, so a client can tell whether a frame has changed since it was
last saved as a version.

The startCaptureManually description now says that the FullStory script still
loads at init and that recording starts once a consent key mapped to capture
is granted. The step examples name the consent mapping they rely on.

The Cloud Function and Pub/Sub push handlers now accept the request headers that
Express and the Functions Framework pass, where a header value may be undefined.
The typed handler from Source.getSource now plugs straight into http() from
the Functions Framework or an Express route, without a cast.

The settings schema now lists the GA4 settings scriptSrc and init, so
walkeros validate no longer warns about them as unknown properties.

The disablePageviewAutocapture, disableSessionReplay and ingestServer
descriptions now say that the classic Heap SDK loaded by loadScript ignores
them. The settings schema lists heapConfig for further heap.load() options,
and the step examples name the destination config they rely on and the consent
methods the classic SDK lacks.

The five event colours (globals, context, entity, property, action) now have a
light-theme value that reads as text on light backgrounds. Their constants in
@walkeros/explorer/design are now { dark, light } objects, like every other
themed colour; read .dark where the colour sits on a dark ground.

The ecommerce step examples are no longer published in the docs, and their
descriptions say they are test fixtures. Matomo needs an addEcommerceItem call
per product before a cart update, and before an order to record its products,
and tracks a product view as setEcommerceView followed by a page view. One
rule sends one command.

deploy_manage and flow_manage preview_create take the settings identifier
as settingsName. flowName is only a display name in results. Unknown input
keys on these two tools are now rejected instead of ignored.

The group setting description now says it is resolved and sent with
set_group on every push, not at init. The step examples name the destination
config they rely on, the login example uses a millisecond timestamp, and a new
example covers the destination-level group.

The identified description and hint now explain why its consent states stay
out of config.consent: a destination needs only one granted state there, so a
repeated state lets events through on its own, and as the only state it holds
events back, so no anonymous hit is sent.

The custom event step example now sends scalar props only. Plausible accepts
no arrays or objects as prop values and expects revenue as
{ currency, amount }, as the purchase example shows.

The capture_heatmaps and capture_exceptions descriptions now say that, when
unset, the PostHog project setting decides. The identify and group
descriptions say when the calls repeat. The step examples name the destination
config they rely on, and the login example uses a millisecond timestamp.

The runner refuses to start when the loaded flow does not match
WALKEROS_FLOW_RELEASE (and WALKEROS_FLOW_NAME, when set), so a container
never serves an artifact other than the one it was deployed with. Every start
logs the loaded flow's name and release.

The consent setting description now says that only mapped keys are forwarded
and that no consent context is sent without it. The cdnURL description says
the setting is not applied, the identify description says identify repeats on
every push while anonymousId is set, and the step examples name the config
they rely on.

The ecommerce step examples now test for a product entity without a package
helper. The published condition, shown in the docs and returned by
package_get, referenced a minified import and threw when copied into a flow;
it now runs on its own.

Highlight colours now follow the walkerOS design system. Outlines on the story
canvas, the highlight buttons and the attribute badges use the same event
colours as the rest of walkerOS, and every outline carries a thin dark edge so
it stays readable on light and dark stories.

The walkerOS panel takes its text sizes from the Storybook theme, so labels,
highlight buttons and attribute badges match the rest of the Storybook UI.

Published Packages