Skip to content

walkerOS v4.7.2

Choose a tag to compare

@github-actions github-actions released this 06 Oct 10:42

Changes

An async mapping rule condition is now awaited, in rule order, so a condition
that resolves to false no longer matches. A condition that throws is logged
and counts as no match. New isThenable helper export.

setDefaultProject (MCP project_manage set_default) now needs a credential
instead of just a config file, works with only WALKEROS_TOKEN set, and refuses
while WALKEROS_PROJECT_ID names another project. The local MCP server now uses
WALKEROS_PROJECT_ID when a call names no project. New export:
resolveProjectId().

Importing explorer no longer downloads the Monaco editor. Monaco now loads when
the first code editor appears on a page, so pages without an editor stay light.
Editors keep their themes, type checking and autocompletion.

Requests to a path or method that is not configured now get a JSON 404
({ "success": false, "error": "Not found" }) instead of the Express HTML page,
which named the framework and echoed the requested path.

The flow-complete.json example stops an opted-out user (user.optout) first:
on the web nothing is sent, on the server the event stops before dedup. Piwik
PRO now gets the customer segment as custom dimension 1, and the GA4 purchase
rule drops its consent, which only repeated the destination consent.

The GTM destination pushes the whole walkerOS event to the dataLayer when no
data mapping is configured, with event set to its name. Before, such a push
carried only the event name. Pushes with a mapping are unchanged and still carry
only the mapped values.

A tool refused for a missing role, scope or feature no longer suggests logging
in; that hint now appears only when the login is rejected or missing. Project
commands now report error codes such as FORBIDDEN in the machine-readable
error line and show upgrade instructions when the app needs a newer CLI.

flow_manage list without a projectId now wraps project and flow names in
<user_data>, like the list of one project, and both lists wrap a flow's
summary. Settings names stay literal.

ToolClient.credentialSource() can return 'host' for a door the host
authenticates per request. There, auth reports the connection as logged in,
answers login with "no login needed" and refuses logout. The auth tool no
longer changes process.env; the local door clears WALKEROS_TOKEN itself.
auth logout answers loggedOut: false when a credential is still there
afterwards, such as a session stored by a parallel login.

MCP tool results are always an object: mcpResult answers a list as { items }
and a bare value as { value } instead of a bare or spread array, and
project_manage list always answers { projects }.

validate_tagging reads actions with the browser source's own parser and knows
every trigger it handles, so scroll(50):read, custom and quoted action
params no longer warn, and it checks both data-elbaction and data-elbactions
on one element. generate_tagging refuses a link with more than one entry.

The MCP server instructions now name exactly which mapping fields apply at a
transformer and which do nothing there.

Quoted action parameters that contain a semicolon, like add('x;y'), parse as
one parameter again. An apostrophe inside a word, like Men's or l'été, stays
part of the value.

The MCP setup-mapping prompt, the MCP instructions, the schema descriptions and
the flow-complete example no longer claim that a mapping rule's consent gates
events. A rule's consent is not enforced yet; to require consent for a
destination, set consent in the destination's config.

An event a source drops because its config.consent is not granted is no longer
silent: the push result says dropped: true, a debug log names the source, and
observers see a skip with the reason consent.

tagger.link() sets the one link an element carries and throws on a second,
different link or an object with several entries. Before, it joined several
links into one data-elblink that the browser source could not read, so every
link on the element was lost. getTriggerActions and Triggers are now
exported.

A code-less transformer now runs its config.mapping (it wins over the
step-level mapping), and a flow bundle keeps a code-less transformer whose
only mapping or state sits in config. Init warns about every mapping field
that does nothing in a transformer, rules in array form included, about a
mapping next to code or package, which never runs, and about a step-level
mapping that config.mapping overrides; validateFlowStructure reports the
same warnings. New exports: getTransformerMapping,
getTransformerMappingWarnings.

startFlow now types each step by the package passed as code, so settings,
mapping rule settings and env keys autocomplete and an unknown setting is a
type error; steps without typed code stay as loose as before. The Storybook
addon no longer passes a session setting the browser source never had.

walkeros validate and MCP flow_validate now show the structural warnings of
a flow, such as a transformer mapping field that does nothing
(TRANSFORMER_MAPPING_NO_OP), as warnings, not errors.

Published Packages