Skip to content

Commit 292e39b

Browse files
authored
Merge pull request #126 from retentioneering/docs/changelog-links-and-stale-names
pre-release changelog update
2 parents 88f5f32 + 9583002 commit 292e39b

1 file changed

Lines changed: 2 additions & 0 deletions

File tree

CHANGELOG.md

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,8 @@ Format: [Keep a Changelog](https://keepachangelog.com/en/1.0.0/)
55

66
## [Unreleased]
77

8+
## [5.2.0] - 2026-08-19
9+
810
### Added
911

1012
- **Path patterns got a real syntax**, and a guide page to go with it: [Path Patterns](https://retentioneering.com/docs/path-patterns). One position can now be a [class of events](https://retentioneering.com/docs/path-patterns#the-tokens) instead of a single name — `[a|b|c]` (any of), `[^a]` / `[^a|b]` (anything but), `.` (any event) — which replaces the `rename_events` workaround for "any of these events", damaging the stream to ask one question. Quantifying a class with `*` turns it into a [restricted gap](https://retentioneering.com/docs/path-patterns#restricting-what-lies-between), a run of events like this rather than one: `add_to_cart->[^support_chat]*->purchase` is "bought without ever contacting support", `path_start->[^purchase]*->path_end` is "never purchased". `.*` is the unrestricted case of the same construct, so the two compose. Works everywhere a pattern is accepted — Step Matrix / Step Sankey / Transition Graph `path_pattern`, the `matches_pattern` metric, `truncate_paths` anchors. Details: the syntax follows Python's regular expressions with one substitution, a token is an event rather than a character, so negation lives *inside* the brackets (`[^a]`, never `^[a]`) and members are separated by `|`. A class occupies one position and one ordinal, so `at=` / `occurrence=` / Step Matrix centring are unaffected — centring on `[payment_error|checkout_bug]` behaves as centring on an event, except that column 0 shows a distribution over the class rather than one event at 1.0; a gap is not a position and takes no ordinal, so they are unaffected by that too. `.` and `[^...]` never match `path_start`/`path_end`, mirroring regex, where `.` does not match a string boundary — which is what makes `".->product_view"` mean "a product view that was not the path's first event", previously inexpressible. A restricted gap needs an anchor on each side, and [`^`/`$` are not anchors](https://retentioneering.com/docs/path-patterns#boundaries-are-not-events): a path's boundaries already have names. Constructs whose scope would exceed one position (`[^a->b]`, `a->b|c->d`, `[a|b]*`) are [rejected with an explanation](https://retentioneering.com/docs/path-patterns#what-is-not-supported) rather than half-supported

0 commit comments

Comments
 (0)