Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 4 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,9 @@
# Changelog

## 19.2.2
Fixed: a product tour or tooltip selector that is not valid CSS, such as an attribute typed without its brackets (`data-test="x"` instead of `[data-test="x"]`), no longer throws. The bracketless form now finds its element; anything else counts as not found, so the tour ends cleanly instead of stopping with an error, copilot tours stop waiting after 5 s, and tooltips keep working.
Fixed: the tour editor's element picker no longer stores ids and classes that Mantine and React 19 generate at runtime (`mantine-…` ids, `«r1»` / `_r_1_` from `useId`, Mantine 6 `mantine-<hash>`, Mantine 7 `m_<hash>` and `__m__-…` classes). They changed on the next page load, deploy or Mantine update and silently ended the tour; the picker now prefers stable names such as `mantine-Button-root`.

## 19.2.1
Surveys: questions asking for the email, name or phone of an identified contact are skipped (with the Surveys 2.0 "Skip when known" option). `Gleap.showSurvey` and every automatic survey now wait for an `identify` or `updateContact` still in flight (at most 5 s), so the survey starts with the identified contact instead of the guest.
Fixed: a survey with nothing left to ask could leave an empty white card on screen (and `Gleap.isOpened()` true) when its frame was not loaded yet. A frame that was never shown now hides without the close animation and without a `close` event; `Gleap.close()` on a closed widget no longer fires `close`.
Expand Down
2 changes: 1 addition & 1 deletion build/browser/index.js

Large diffs are not rendered by default.

2 changes: 1 addition & 1 deletion build/browser/index.js.map

Large diffs are not rendered by default.

2 changes: 1 addition & 1 deletion build/cjs/index.js

Large diffs are not rendered by default.

2 changes: 1 addition & 1 deletion build/cjs/index.js.map

Large diffs are not rendered by default.

2 changes: 1 addition & 1 deletion build/esm/index.mjs

Large diffs are not rendered by default.

2 changes: 1 addition & 1 deletion build/esm/index.mjs.map

Large diffs are not rendered by default.

4 changes: 2 additions & 2 deletions package-lock.json

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 1 addition & 1 deletion package.json
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
{
"description": "JavaScript and TypeScript SDK for Gleap, an Intercom alternative with AI customer support, live chat, in-app bug reporting and customer feedback.",
"name": "gleap",
"version": "19.2.1",
"version": "19.2.2",
"main": "build/cjs/index.js",
"module": "build/esm/index.mjs",
"exports": {
Expand Down
2 changes: 2 additions & 0 deletions published/19.2.2/index.js

Large diffs are not rendered by default.

1 change: 1 addition & 0 deletions published/19.2.2/index.js.map

Large diffs are not rendered by default.

1 change: 1 addition & 0 deletions published/19.2.2/survey-embed.js

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 1 addition & 1 deletion published/latest/index.js

Large diffs are not rendered by default.

2 changes: 1 addition & 1 deletion published/latest/index.js.map

Large diffs are not rendered by default.

17 changes: 15 additions & 2 deletions src/GleapTourSelector.js
Original file line number Diff line number Diff line change
Expand Up @@ -18,9 +18,13 @@ import unique from './unique-selector/src/unique-selector';
const GENERATED_ID_PATTERNS = [
// Vue 3 `useId()` (`v-34`, and derived ids such as `input-v-34`).
'v-\\d+',
// React 18 `useId()` and the libraries building on top of it.
// React `useId()`: `:r3:` (18), `«r3»` (19.0/19.1), `_r_3_` (19.2+), and the
// libraries building on top of it (Mantine: `mantine-r3`, or random
// `mantine-fsu9sfwdg` without React 18).
':r[0-9a-z]+:',
'(?:radix|headlessui|reach|floating-ui)-',
'«r[0-9a-z]+»',
'_r_[0-9a-z]+_',
'(?:radix|headlessui|reach|floating-ui|mantine)-',
// Component libraries with mount counters.
'mui-\\d+',
'(?:mat|cdk)-[a-z-]+-?\\d+',
Expand All @@ -41,6 +45,15 @@ const GENERATED_CLASS_PATTERNS = [
'sc-(?=[a-zA-Z0-9]*[A-Z])[a-zA-Z0-9]{5,}',
// styled-jsx
'jsx-\\d+',
// Mantine 6 (emotion with the `mantine` key).
'mantine-[a-z0-9]*\\d[a-z0-9]*',
// Mantine 7 component classes (`m_6d731127`). They change with every Mantine
// release; the static `mantine-Button-root` names next to them do not.
'm_[0-9a-f]{8}$',
// Mantine 7 scoped style classes, named after a React `useId()`.
'__m__-',
// A React `useId()` used as a class name.
'_r_[0-9a-z]+_',
];

// CSS modules: `Button_root__2Hs3q`. The trailing hash has to look like base64
Expand Down
Loading