diff --git a/android/KMEA/app/src/main/assets/keyboard.html b/android/KMEA/app/src/main/assets/keyboard.html
index 8d9d2d67dc..38f5ad617e 100644
--- a/android/KMEA/app/src/main/assets/keyboard.html
+++ b/android/KMEA/app/src/main/assets/keyboard.html
@@ -9,7 +9,6 @@
Keyman
-
diff --git a/android/KMEA/app/src/main/java/com/keyman/engine/KMManager.java b/android/KMEA/app/src/main/java/com/keyman/engine/KMManager.java
index 76c73120e3..75b0443537 100644
--- a/android/KMEA/app/src/main/java/com/keyman/engine/KMManager.java
+++ b/android/KMEA/app/src/main/java/com/keyman/engine/KMManager.java
@@ -362,8 +362,7 @@ public final class KMManager {
// Keyman files
protected static final String KMFilename_KeyboardHtml = "keyboard.html";
protected static final String KMFilename_JSEngine = "keymanweb-webview.js";
- protected static final String KMFilename_JSSentry = "sentry.min.js";
- protected static final String KMFilename_JSSentryInit = "keyman-sentry.js";
+ protected static final String KMFilename_JSSentry = "keyman-sentry.js";
protected static final String KMFilename_AndroidHost = "android-host.js";
protected static final String KMFilename_KmwCss = "kmwosk.css";
protected static final String KMFilename_KmwGlobeHintCss = "globe-hint.css";
@@ -982,7 +981,6 @@ public final class KMManager {
copyAsset(context, KMFilename_JSEngine, "", true);
copyAsset(context, KMFilename_JSSentry, "", true);
- copyAsset(context, KMFilename_JSSentryInit, "", true);
copyAsset(context, KMFilename_AndroidHost, "", true);
copyAsset(context, KMFilename_KmwCss, "", true);
copyAsset(context, KMFilename_KmwGlobeHintCss, "", true);
diff --git a/android/KMEA/build.sh b/android/KMEA/build.sh
index dcd4c9510a..4d4ea7f8e3 100755
--- a/android/KMEA/build.sh
+++ b/android/KMEA/build.sh
@@ -29,7 +29,7 @@ builder_describe "Builds Keyman Engine for Android." \
"configure" \
"build" \
"test Runs lint and unit tests." \
- ":engine Builds Engine"
+ ":engine Builds Engine"
# parse before describe_outputs to check debug flags
builder_parse "$@"
@@ -82,8 +82,6 @@ if builder_start_action build:engine; then
cp "$KEYMAN_WEB_ROOT/build/app/resources/osk/kmwosk.css" "$ENGINE_ASSETS/kmwosk.css"
cp "$KEYMAN_WEB_ROOT/build/app/resources/osk/globe-hint.css" "$ENGINE_ASSETS/globe-hint.css"
cp "$KEYMAN_WEB_ROOT/build/app/resources/osk/keymanweb-osk.ttf" "$ENGINE_ASSETS/keymanweb-osk.ttf"
-
- cp "$KEYMAN_ROOT/node_modules/@sentry/browser/build/bundle.min.js" "$ENGINE_ASSETS/sentry.min.js"
cp "$KEYMAN_ROOT/web/src/engine/sentry-manager/build/lib/index.js" "$ENGINE_ASSETS/keyman-sentry.js"
echo "Copying es6-shim polyfill"
diff --git a/docs/minimum-versions.md b/docs/minimum-versions.md
index b01ca18b51..28af8e676b 100644
--- a/docs/minimum-versions.md
+++ b/docs/minimum-versions.md
@@ -56,7 +56,7 @@ https://help.keyman.com/developer/engine/android/latest-version/
| KEYMAN_MIN_TARGET_VERSION_UBUNTU | 22.04 |
| KEYMAN_MIN_TARGET_VERSION_WEB_CHROME | 95.0 |
| KEYMAN_MIN_TARGET_VERSION_WEB_FIREFOX | 79.0 |
-| KEYMAN_MIN_TARGET_VERSION_WEB_OPERA | 47.0 |
+| KEYMAN_MIN_TARGET_VERSION_WEB_OPERA | 58.0 |
| KEYMAN_MIN_TARGET_VERSION_WEB_SAFARI | 13.0 |
| KEYMAN_MIN_TARGET_VERSION_WINDOWS | 10 |
| KEYMAN_MIN_VERSION_ANDROID_SDK | 21 |
diff --git a/ios/engine/KMEI/KeymanEngine/Classes/Resource Management/Storage.swift b/ios/engine/KMEI/KeymanEngine/Classes/Resource Management/Storage.swift
index f4d2006b4e..6775edb660 100644
--- a/ios/engine/KMEI/KeymanEngine/Classes/Resource Management/Storage.swift
+++ b/ios/engine/KMEI/KeymanEngine/Classes/Resource Management/Storage.swift
@@ -237,10 +237,6 @@ extension Storage {
resourceName: "keymanweb-webview.js",
dstDir: baseDir,
excludeFromBackup: true)
- try Storage.copy(from: bundle,
- resourceName: "sentry.min.js",
- dstDir: baseDir,
- excludeFromBackup: true)
try Storage.copy(from: bundle,
resourceName: "keyman-sentry.js",
dstDir: baseDir,
diff --git a/ios/engine/KMEI/KeymanEngine/resources/Keyman.bundle/Contents/Resources/keyboard.html b/ios/engine/KMEI/KeymanEngine/resources/Keyman.bundle/Contents/Resources/keyboard.html
index 7c538ae64a..5f2910839e 100644
--- a/ios/engine/KMEI/KeymanEngine/resources/Keyman.bundle/Contents/Resources/keyboard.html
+++ b/ios/engine/KMEI/KeymanEngine/resources/Keyman.bundle/Contents/Resources/keyboard.html
@@ -4,7 +4,6 @@
Keyman
-
diff --git a/ios/engine/build.sh b/ios/engine/build.sh
index 5a8d02b840..fd473a2cdf 100755
--- a/ios/engine/build.sh
+++ b/ios/engine/build.sh
@@ -107,8 +107,6 @@ function update_bundle ( ) {
cp "$KMW_RESOURCES/osk/kmwosk.css" "$BUNDLE_PATH/kmwosk.css"
cp "$KMW_RESOURCES/osk/keymanweb-osk.ttf" "$BUNDLE_PATH/keymanweb-osk.ttf"
cp "$KMW_PRODUCT/keymanweb-webview.js" "$BUNDLE_PATH/keymanweb-webview.js"
-
- cp "$KEYMAN_ROOT/node_modules/@sentry/browser/build/bundle.min.js" "$BUNDLE_PATH/sentry.min.js"
cp "$KEYMAN_ROOT/web/src/engine/sentry-manager/build/lib/index.js" "$BUNDLE_PATH/keyman-sentry.js"
}
diff --git a/package-lock.json b/package-lock.json
index cf7d1380da..268c33bf87 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -2908,6 +2908,100 @@
"node": ">=0.6.19"
}
},
+ "node_modules/@sentry-internal/browser-utils": {
+ "version": "8.55.0",
+ "resolved": "https://registry.npmjs.org/@sentry-internal/browser-utils/-/browser-utils-8.55.0.tgz",
+ "integrity": "sha512-ROgqtQfpH/82AQIpESPqPQe0UyWywKJsmVIqi3c5Fh+zkds5LUxnssTj3yNd1x+kxaPDVB023jAP+3ibNgeNDw==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@sentry/core": "8.55.0"
+ },
+ "engines": {
+ "node": ">=14.18"
+ }
+ },
+ "node_modules/@sentry-internal/browser-utils/node_modules/@sentry/core": {
+ "version": "8.55.0",
+ "resolved": "https://registry.npmjs.org/@sentry/core/-/core-8.55.0.tgz",
+ "integrity": "sha512-6g7jpbefjHYs821Z+EBJ8r4Z7LT5h80YSWRJaylGS4nW5W5Z2KXzpdnyFarv37O7QjauzVC2E+PABmpkw5/JGA==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=14.18"
+ }
+ },
+ "node_modules/@sentry-internal/feedback": {
+ "version": "8.55.0",
+ "resolved": "https://registry.npmjs.org/@sentry-internal/feedback/-/feedback-8.55.0.tgz",
+ "integrity": "sha512-cP3BD/Q6pquVQ+YL+rwCnorKuTXiS9KXW8HNKu4nmmBAyf7urjs+F6Hr1k9MXP5yQ8W3yK7jRWd09Yu6DHWOiw==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@sentry/core": "8.55.0"
+ },
+ "engines": {
+ "node": ">=14.18"
+ }
+ },
+ "node_modules/@sentry-internal/feedback/node_modules/@sentry/core": {
+ "version": "8.55.0",
+ "resolved": "https://registry.npmjs.org/@sentry/core/-/core-8.55.0.tgz",
+ "integrity": "sha512-6g7jpbefjHYs821Z+EBJ8r4Z7LT5h80YSWRJaylGS4nW5W5Z2KXzpdnyFarv37O7QjauzVC2E+PABmpkw5/JGA==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=14.18"
+ }
+ },
+ "node_modules/@sentry-internal/replay": {
+ "version": "8.55.0",
+ "resolved": "https://registry.npmjs.org/@sentry-internal/replay/-/replay-8.55.0.tgz",
+ "integrity": "sha512-roCDEGkORwolxBn8xAKedybY+Jlefq3xYmgN2fr3BTnsXjSYOPC7D1/mYqINBat99nDtvgFvNfRcZPiwwZ1hSw==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@sentry-internal/browser-utils": "8.55.0",
+ "@sentry/core": "8.55.0"
+ },
+ "engines": {
+ "node": ">=14.18"
+ }
+ },
+ "node_modules/@sentry-internal/replay-canvas": {
+ "version": "8.55.0",
+ "resolved": "https://registry.npmjs.org/@sentry-internal/replay-canvas/-/replay-canvas-8.55.0.tgz",
+ "integrity": "sha512-nIkfgRWk1091zHdu4NbocQsxZF1rv1f7bbp3tTIlZYbrH62XVZosx5iHAuZG0Zc48AETLE7K4AX9VGjvQj8i9w==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@sentry-internal/replay": "8.55.0",
+ "@sentry/core": "8.55.0"
+ },
+ "engines": {
+ "node": ">=14.18"
+ }
+ },
+ "node_modules/@sentry-internal/replay-canvas/node_modules/@sentry/core": {
+ "version": "8.55.0",
+ "resolved": "https://registry.npmjs.org/@sentry/core/-/core-8.55.0.tgz",
+ "integrity": "sha512-6g7jpbefjHYs821Z+EBJ8r4Z7LT5h80YSWRJaylGS4nW5W5Z2KXzpdnyFarv37O7QjauzVC2E+PABmpkw5/JGA==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=14.18"
+ }
+ },
+ "node_modules/@sentry-internal/replay/node_modules/@sentry/core": {
+ "version": "8.55.0",
+ "resolved": "https://registry.npmjs.org/@sentry/core/-/core-8.55.0.tgz",
+ "integrity": "sha512-6g7jpbefjHYs821Z+EBJ8r4Z7LT5h80YSWRJaylGS4nW5W5Z2KXzpdnyFarv37O7QjauzVC2E+PABmpkw5/JGA==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=14.18"
+ }
+ },
"node_modules/@sentry-internal/tracing": {
"version": "7.108.0",
"resolved": "https://registry.npmjs.org/@sentry-internal/tracing/-/tracing-7.108.0.tgz",
@@ -2952,26 +3046,6 @@
"node": ">=8"
}
},
- "node_modules/@sentry/browser": {
- "version": "5.30.0",
- "dev": true,
- "license": "BSD-3-Clause",
- "dependencies": {
- "@sentry/core": "5.30.0",
- "@sentry/types": "5.30.0",
- "@sentry/utils": "5.30.0",
- "tslib": "^1.9.3"
- },
- "engines": {
- "node": ">=6"
- }
- },
- "node_modules/@sentry/browser/node_modules/tslib": {
- "version": "1.14.1",
- "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz",
- "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==",
- "dev": true
- },
"node_modules/@sentry/cli": {
"version": "2.31.0",
"resolved": "https://registry.npmjs.org/@sentry/cli/-/cli-2.31.0.tgz",
@@ -3116,65 +3190,6 @@
"node": ">=10"
}
},
- "node_modules/@sentry/core": {
- "version": "5.30.0",
- "dev": true,
- "license": "BSD-3-Clause",
- "dependencies": {
- "@sentry/hub": "5.30.0",
- "@sentry/minimal": "5.30.0",
- "@sentry/types": "5.30.0",
- "@sentry/utils": "5.30.0",
- "tslib": "^1.9.3"
- },
- "engines": {
- "node": ">=6"
- }
- },
- "node_modules/@sentry/core/node_modules/tslib": {
- "version": "1.14.1",
- "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz",
- "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==",
- "dev": true
- },
- "node_modules/@sentry/hub": {
- "version": "5.30.0",
- "dev": true,
- "license": "BSD-3-Clause",
- "dependencies": {
- "@sentry/types": "5.30.0",
- "@sentry/utils": "5.30.0",
- "tslib": "^1.9.3"
- },
- "engines": {
- "node": ">=6"
- }
- },
- "node_modules/@sentry/hub/node_modules/tslib": {
- "version": "1.14.1",
- "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz",
- "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==",
- "dev": true
- },
- "node_modules/@sentry/minimal": {
- "version": "5.30.0",
- "dev": true,
- "license": "BSD-3-Clause",
- "dependencies": {
- "@sentry/hub": "5.30.0",
- "@sentry/types": "5.30.0",
- "tslib": "^1.9.3"
- },
- "engines": {
- "node": ">=6"
- }
- },
- "node_modules/@sentry/minimal/node_modules/tslib": {
- "version": "1.14.1",
- "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz",
- "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==",
- "dev": true
- },
"node_modules/@sentry/node": {
"version": "7.108.0",
"resolved": "https://registry.npmjs.org/@sentry/node/-/node-7.108.0.tgz",
@@ -3220,32 +3235,6 @@
"node": ">=8"
}
},
- "node_modules/@sentry/types": {
- "version": "5.30.0",
- "dev": true,
- "license": "BSD-3-Clause",
- "engines": {
- "node": ">=6"
- }
- },
- "node_modules/@sentry/utils": {
- "version": "5.30.0",
- "dev": true,
- "license": "BSD-3-Clause",
- "dependencies": {
- "@sentry/types": "5.30.0",
- "tslib": "^1.9.3"
- },
- "engines": {
- "node": ">=6"
- }
- },
- "node_modules/@sentry/utils/node_modules/tslib": {
- "version": "1.14.1",
- "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz",
- "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==",
- "dev": true
- },
"node_modules/@sindresorhus/is": {
"version": "4.6.0",
"license": "MIT",
@@ -14122,6 +14111,33 @@
"tsx": "^4.19.0"
}
},
+ "web/node_modules/@sentry/browser": {
+ "version": "8.55.0",
+ "resolved": "https://registry.npmjs.org/@sentry/browser/-/browser-8.55.0.tgz",
+ "integrity": "sha512-1A31mCEWCjaMxJt6qGUK+aDnLDcK6AwLAZnqpSchNysGni1pSn1RWSmk9TBF8qyTds5FH8B31H480uxMPUJ7Cw==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@sentry-internal/browser-utils": "8.55.0",
+ "@sentry-internal/feedback": "8.55.0",
+ "@sentry-internal/replay": "8.55.0",
+ "@sentry-internal/replay-canvas": "8.55.0",
+ "@sentry/core": "8.55.0"
+ },
+ "engines": {
+ "node": ">=14.18"
+ }
+ },
+ "web/node_modules/@sentry/core": {
+ "version": "8.55.0",
+ "resolved": "https://registry.npmjs.org/@sentry/core/-/core-8.55.0.tgz",
+ "integrity": "sha512-6g7jpbefjHYs821Z+EBJ8r4Z7LT5h80YSWRJaylGS4nW5W5Z2KXzpdnyFarv37O7QjauzVC2E+PABmpkw5/JGA==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=14.18"
+ }
+ },
"web/src/engine/common/web-utils": {
"name": "@keymanapp/web-utils",
"license": "MIT",
@@ -14229,7 +14245,7 @@
"license": "MIT",
"dependencies": {
"@keymanapp/keyman-version": "*",
- "@sentry/browser": "^5.27.4"
+ "@sentry/browser": "^8.55.0"
},
"devDependencies": {
"typescript": "^5.4.5"
diff --git a/resources/build/minimum-versions.inc.sh b/resources/build/minimum-versions.inc.sh
index eed047e39d..49e546c0fb 100644
--- a/resources/build/minimum-versions.inc.sh
+++ b/resources/build/minimum-versions.inc.sh
@@ -21,7 +21,7 @@ KEYMAN_MIN_TARGET_VERSION_ANDROID_CHROME=53.0 # min version of Chrome for Keyman
# earlier versions, YMMV
KEYMAN_MIN_TARGET_VERSION_WEB_CHROME=95.0 # Note: 95.0 is final version that runs on Android 5.0
KEYMAN_MIN_TARGET_VERSION_WEB_FIREFOX=79.0 # TBD
-KEYMAN_MIN_TARGET_VERSION_WEB_OPERA=47.0 # TBD
+KEYMAN_MIN_TARGET_VERSION_WEB_OPERA=58.0 # TBD
KEYMAN_MIN_TARGET_VERSION_WEB_SAFARI=13.0 # iOS 13.0, macOS 10.13.6+
# Dependency minimum versions
diff --git a/web/src/engine/sentry-manager/package.json b/web/src/engine/sentry-manager/package.json
index 54f5f64dce..0abacd012e 100644
--- a/web/src/engine/sentry-manager/package.json
+++ b/web/src/engine/sentry-manager/package.json
@@ -21,6 +21,6 @@
},
"dependencies": {
"@keymanapp/keyman-version": "*",
- "@sentry/browser": "^5.27.4"
+ "@sentry/browser": "^8.55.0"
}
}
diff --git a/web/src/engine/sentry-manager/src/index.ts b/web/src/engine/sentry-manager/src/index.ts
index 9d3b000b97..b8129766d1 100644
--- a/web/src/engine/sentry-manager/src/index.ts
+++ b/web/src/engine/sentry-manager/src/index.ts
@@ -1,15 +1,5 @@
import KEYMAN_VERSION from '@keymanapp/keyman-version';
-
-// Unfortunately, we can't bundle Sentry via direct import - something in the process breaks
-// esbuild due to needing to transform to ES5.
-import { default as SentryType } from '@sentry/browser';
-
-// But this will get us sufficient typing to work with as long as we also link (or prepend)
-// a pre-bundled Sentry build artifact.
-let Sentry: {
- init: typeof SentryType.init;
- // @ts-ignore
-} = window['Sentry'];
+import * as Sentry from '@sentry/browser';
/**
* Controls whether or not the generated Sentry event is logged to the console (true)
diff --git a/web/src/test/manual/build.sh b/web/src/test/manual/build.sh
index b80925aa06..8b564480b8 100755
--- a/web/src/test/manual/build.sh
+++ b/web/src/test/manual/build.sh
@@ -34,8 +34,6 @@ builder_describe_outputs \
SENTRY_MANAGER_SRC="$KEYMAN_ROOT/web/src/engine/sentry-manager/build/lib/index.js"
SENTRY_MANAGER_MAP="$KEYMAN_ROOT/web/src/engine/sentry-manager/build/lib/index.js.map"
-SENTRY_SRC="$KEYMAN_ROOT/node_modules/@sentry/browser/build/bundle.min.js"
-SENTRY_MAP="$KEYMAN_ROOT/node_modules/@sentry/browser/build/bundle.min.js.map"
#### Build action definitions ####
@@ -48,8 +46,6 @@ function do_copy() {
# The next four lines are needed for the sentry-integration manual test page.
cp "$SENTRY_MANAGER_SRC" "$KEYMAN_ROOT/$DEST/sentry-manager.js"
cp "$SENTRY_MANAGER_MAP" "$KEYMAN_ROOT/$DEST/sentry-manager.js.map"
- cp "$SENTRY_SRC" "$KEYMAN_ROOT/$DEST/sentry-bundle.min.js"
- cp "$SENTRY_MAP" "$KEYMAN_ROOT/$DEST/sentry-bundle.min.js.map"
mkdir -p "$GESTURE_PROCESSOR_TARGET"
cp -a "$GESTURE_PROCESSOR_BUILD" "$GESTURE_PROCESSOR_TARGET"
diff --git a/web/src/test/manual/embed/android-harness/build.sh b/web/src/test/manual/embed/android-harness/build.sh
index 015660cb0b..31c53e73a0 100755
--- a/web/src/test/manual/embed/android-harness/build.sh
+++ b/web/src/test/manual/embed/android-harness/build.sh
@@ -45,7 +45,6 @@ if builder_start_action build; then
# We shouldn't rely on a prior Android build for these files! We can retrieve them separately.
cp "$KEYMAN_ROOT/web/src/engine/sentry-manager/build/lib/index.js" "host/keyman-sentry.js"
cp "$KEYMAN_ROOT/node_modules/es6-shim/es6-shim.min.js" "host/es6-shim.min.js"
- cp "$KEYMAN_ROOT/node_modules/@sentry/browser/build/bundle.min.js" "host/sentry.min.js"
# Test keyboards