diff --git a/.github/labeler.yml b/.github/labeler.yml
index d831af12b66..5250e321935 100644
--- a/.github/labeler.yml
+++ b/.github/labeler.yml
@@ -35,9 +35,8 @@ developer/:
- developer/**
developer/compilers/:
- - developer/src/kmcomp/**
- - developer/src/kmcmpdll/**
- developer/src/kmc/**
+ - developer/src/kmcmplib/**
- developer/src/kmc-*/**
developer/ide/:
diff --git a/.github/multi-labeler.yml b/.github/multi-labeler.yml
index b2e84bec107..88bb0e73ca6 100644
--- a/.github/multi-labeler.yml
+++ b/.github/multi-labeler.yml
@@ -87,15 +87,3 @@ labels:
- label: 'windows/'
matcher:
title: '\(.*windows.*\):'
-
- #
- # epics -- we will add/remove these as we work on new epics each release
- #
-
- - label: 'epic-ldml'
- matcher:
- branch: '.*epic-ldml.*' # anywhere in the branch name, e.g. feat/epic-ldml/developer/... or feat/developer/foo-epic-ldml
-
- - label: 'epic-kmcompx'
- matcher:
- branch: '.*epic-kmcompx.*'
diff --git a/.gitignore b/.gitignore
index 429948be84e..ac5be21083d 100644
--- a/.gitignore
+++ b/.gitignore
@@ -73,7 +73,6 @@
# /developer/TIKE/
/windows/src/developer/TIKE/stock.kct
-/windows/src/developer/TIKE/kmcmpdll.dll
# /developer/TIKE/redist/
/windows/src/developer/TIKE/redist/Addins
@@ -85,12 +84,6 @@
/windows/src/developer/inst/download.mak
/windows/src/developer/inst/copydev.mak
-# /developer/kmcmpdll/
-/windows/src/developer/kmcmpdll/*.lastbuildstate
-
-# /developer/kmcmpdll/Debug/
-/windows/src/developer/kmcmpdll/Debug/*.idb
-
/windows/src/developer/stock/stock.kct
/windows/src/developer/uitemplates/keyman.kct
@@ -186,10 +179,3 @@ lcov.info
/keyman*.changes
/keyman*.tar.?z
-#Sabine:
-# /common/test/keyboards/invalid/source/*.kmx
-# /developer/src/test/auto/kmcomp/*.kmn
-# /developer/src/test/auto/kmcomp/*.kvk
-# /developer/src/test/auto/kmcomp/*.kvk*
-# /developer/src/test/auto/kmcomp/*.txt
-
diff --git a/HISTORY.md b/HISTORY.md
index 56e8f96c954..4ff80c05a8b 100644
--- a/HISTORY.md
+++ b/HISTORY.md
@@ -1,5 +1,69 @@
# Keyman Version History
+## 17.0.191 alpha 2023-10-15
+
+* chore: update readme for keyboard_info schema (#9746)
+
+## 17.0.190 alpha 2023-10-12
+
+* chore(web): web build streamlining (#9743)
+* chore(linux): Add code coverage reports for keyman-config and keyman-system-service (#9753)
+
+## 17.0.189 alpha 2023-10-11
+
+* refactor(linux): Use auto cleanup (and fix some memory leaks) (#9648)
+* refactor(linux): Simplify adding keyboard (#9734)
+
+## 17.0.188 alpha 2023-10-11
+
+* chore(android,windows): Update crowdin strings for Kannada (#9737)
+
+## 17.0.187 alpha 2023-10-11
+
+* chore(developer): convert Server to ES Modules (#9673)
+* chore(common): convert hextobin to ES Modules (#9676)
+* chore(common): convert resources/build/version to ES Modules (#9678)
+* chore(common): keyman-version now generates only es module (#9680)
+* chore(common): cleanup final Typescript non-ESM metadata (#9681)
+* chore(ios): renew certificate (#9697)
+* (#9687)
+* feat(developer): ldml fix all remaining TODOs around markers and variables (#9688)
+* fix(windows): re-enable signature check (#9695)
+* fix(common): fix schema fixer (#9727)
+* chore(core): rename keyboardprocessor.h to keyman_core_api.h (#9723)
+* chore: rename km_kbp_ to km_core_ (#9724)
+* chore(developer): fixup signcode paths for server (#9730)
+* fix(linux): Explicitly initialize GTK (#9706)
+* chore(linux): Improve Sentry reports (#9725)
+* epic(developer): refactor package-metadata for 17.0 (#9485)
+* chore: clean up a few minor discrepancies in builder.inc.sh (#9731)
+* fix: path for ESM increment-version, and exit code (#9738)
+
+## 17.0.186 alpha 2023-10-04
+
+* feat(developer): show an INFO message when warnings have failed a build (#9652)
+* chore(developer): reduce duplicate words warning to hint (#9653)
+* feat(developer): issue hint if package includes keyboard source files (#9658)
+* chore(developer): switch on code coverage reporting for kmc (#9662)
+* fix(core): clean cached ICU in core (#9668)
+* feat(developer): warn if .kps includes a .js which is not touch-capable (#9667)
+
+## 17.0.185 alpha 2023-10-03
+
+* chore(web): Add non-printing characters to the OSK (#9547)
+* feat(developer): support `store(&version) '17.0'` (#9656)
+* chore(developer): add test for `checkFilenameConventions == false` or unset (#9661)
+* feat(developer): ldml scan codes support (#9615)
+
+## 17.0.184 alpha 2023-10-02
+
+* fix(web): fixes toolbar refocus timing after a keyboard change (#9618)
+
+## 17.0.183 alpha 2023-09-29
+
+* feat(web): browser-KMW support for default subkeys (#9496)
+* refactor(linux): Add more tests for `keymanutil.c` ️ (#9595)
+
## 17.0.182 alpha 2023-09-28
* chore(web): builds that output to web/build/publish should also clean it (#9613)
diff --git a/VERSION.md b/VERSION.md
index 8bf382e6d5e..5e11964caa1 100644
--- a/VERSION.md
+++ b/VERSION.md
@@ -1 +1 @@
-17.0.183
\ No newline at end of file
+17.0.192
\ No newline at end of file
diff --git a/android/KMAPro/kMAPro/src/main/res/values-kn-rIN/strings.xml b/android/KMAPro/kMAPro/src/main/res/values-kn-rIN/strings.xml
index 21ec6f216bb..3d37123cfbb 100644
--- a/android/KMAPro/kMAPro/src/main/res/values-kn-rIN/strings.xml
+++ b/android/KMAPro/kMAPro/src/main/res/values-kn-rIN/strings.xml
@@ -26,6 +26,7 @@
ಇಲ್ಲಿ ಟೈಪ್ ಮಾಡಲು ಪ್ರಾರಂಭಿಸಿ…
+
ಅಕ್ಷರದ ಗಾತ್ರ: %1$d
@@ -33,6 +34,8 @@
ಅಕ್ಷರದ ಗಾತ್ರ ಹೆಚ್ಚಿಸಿ
ಅಕ್ಷರದ ಗಾತ್ರ ತಗ್ಗಿಸಿ
+
+ ಅಕ್ಷರ ಗಾತ್ರದ ಸ್ಲೈಡರ್
\nಎಲ್ಲಾ ಪಠ್ಯವನ್ನು ತೆರವುಗೊಳಿಸಲಾಗುತ್ತದೆ\n
diff --git a/android/Tests/KeyboardHarness/app/src/main/assets/keyboardharness.kmp b/android/Tests/KeyboardHarness/app/src/main/assets/keyboardharness.kmp
index 3a8f1cb624c..30a4f87663b 100644
Binary files a/android/Tests/KeyboardHarness/app/src/main/assets/keyboardharness.kmp and b/android/Tests/KeyboardHarness/app/src/main/assets/keyboardharness.kmp differ
diff --git a/android/Tests/KeyboardHarness/app/src/main/assets/test9469.kmp b/android/Tests/KeyboardHarness/app/src/main/assets/test9469.kmp
index 100cc1d70b6..8390d5dee31 100644
Binary files a/android/Tests/KeyboardHarness/app/src/main/assets/test9469.kmp and b/android/Tests/KeyboardHarness/app/src/main/assets/test9469.kmp differ
diff --git a/android/Tests/KeyboardHarness/readme.md b/android/Tests/KeyboardHarness/readme.md
index 1e00343bf55..898d9926382 100644
--- a/android/Tests/KeyboardHarness/readme.md
+++ b/android/Tests/KeyboardHarness/readme.md
@@ -10,6 +10,8 @@ and consists of these engineering keyboards:
* web/testing/chirality/chirality.js
* web/testing/platform/platformtest.js
+test9469.kmp is another engineering keyboard to show non-printing characters on the OSK.
+
### Compiling From Command Line
1. Launch a command prompt to the `android/` folder
2. Compile KMEA. This will build and copy `keyman-engine.aar` to the Samples and Test projects
diff --git a/common/include/km_types.h b/common/include/km_types.h
index d81f2672384..aa7fb2e5182 100644
--- a/common/include/km_types.h
+++ b/common/include/km_types.h
@@ -28,14 +28,14 @@ typedef uint8_t KMX_BYTE;
typedef uint16_t KMX_WORD;
#if defined(__cplusplus)
-typedef char16_t km_kbp_cp;
-typedef char32_t km_kbp_usv;
+typedef char16_t km_core_cp;
+typedef char32_t km_core_usv;
#else
-typedef uint16_t km_kbp_cp; // code point
-typedef uint32_t km_kbp_usv; // Unicode Scalar Value
+typedef uint16_t km_core_cp; // code point
+typedef uint32_t km_core_usv; // Unicode Scalar Value
#endif
-typedef km_kbp_cp KMX_WCHAR; // wc, 16-bit UNICODE character
+typedef km_core_cp KMX_WCHAR; // wc, 16-bit UNICODE character
typedef KMX_WCHAR* PKMX_WCHAR;
typedef char KMX_CHAR;
@@ -60,7 +60,7 @@ typedef KMX_DWORD* PKMX_DWORD;
#ifdef USE_CHAR16_T
#define lpuch(x) u ## x
-typedef km_kbp_cp KMX_UCHAR;
+typedef km_core_cp KMX_UCHAR;
#else
#define lpuch(x) L ## x
typedef wchar_t KMX_UCHAR;
diff --git a/common/include/kmx_file.h b/common/include/kmx_file.h
index b689ba685ad..243e5e0d638 100644
--- a/common/include/kmx_file.h
+++ b/common/include/kmx_file.h
@@ -68,9 +68,10 @@ namespace kmx {
#define VERSION_150 0x00000F00
#define VERSION_160 0x00001000
+#define VERSION_170 0x00001100
#define VERSION_MIN VERSION_50
-#define VERSION_MAX VERSION_160
+#define VERSION_MAX VERSION_170
//
// Backspace types
diff --git a/common/include/test_assert.h b/common/include/test_assert.h
index 655074ba8b2..8cc0f3b624d 100644
--- a/common/include/test_assert.h
+++ b/common/include/test_assert.h
@@ -30,7 +30,7 @@
#endif
#define try_status(expr) { \
auto __s = (expr); \
- if (__s != KM_KBP_STATUS_OK) { \
+ if (__s != KM_CORE_STATUS_OK) { \
_assert_failed(__s, u ## #expr); \
} \
}
diff --git a/common/models/templates/package.json b/common/models/templates/package.json
index 0bec0fc88fa..33f89cca706 100644
--- a/common/models/templates/package.json
+++ b/common/models/templates/package.json
@@ -21,9 +21,7 @@
"exports": {
".": "./build/obj/index.js",
"./lib": {
- "types": "./build/lib/index.d.ts",
- "import": "./build/lib/index.mjs",
- "require": "./build/lib/index.cjs"
+ "types": "./build/lib/index.d.ts"
},
"./obj/*.js": "./build/obj/*.js"
},
diff --git a/common/models/wordbreakers/package.json b/common/models/wordbreakers/package.json
index bd8d0157fbd..7a03dc9e8fb 100644
--- a/common/models/wordbreakers/package.json
+++ b/common/models/wordbreakers/package.json
@@ -19,8 +19,7 @@
"exports": {
".": "./build/obj/index.js",
"./lib": {
- "import": "./build/lib/index.mjs",
- "require": "./build/lib/index.cjs"
+ "types": "./build/lib/index.d.ts"
},
"./obj/*.js": "./build/obj/*.js"
},
diff --git a/common/predictive-text/testing/index.html b/common/predictive-text/testing/index.html
deleted file mode 100644
index 8a00094b701..00000000000
--- a/common/predictive-text/testing/index.html
+++ /dev/null
@@ -1,28 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
- LMLayer Testing
-
-
-
- Language-Modeling Layer module testing
- Designed as a baseline functionality test we can run against various platforms as a first-stage canary of sorts.
- A prototype for directly embedding a WebWorker's code within a "master" script.
- A prototype for two-stage compilation of a master/slave main-script/WebWorker pair.
- A prototype for sending code over to a WebWorker via a Blob URI reference.
-
-
diff --git a/common/predictive-text/testing/one-stage-embedded-webworker/.gitignore b/common/predictive-text/testing/one-stage-embedded-webworker/.gitignore
deleted file mode 100644
index df6361deda9..00000000000
--- a/common/predictive-text/testing/one-stage-embedded-webworker/.gitignore
+++ /dev/null
@@ -1,2 +0,0 @@
-main.js
-main.js.map
\ No newline at end of file
diff --git a/common/predictive-text/testing/one-stage-embedded-webworker/build.sh b/common/predictive-text/testing/one-stage-embedded-webworker/build.sh
deleted file mode 100755
index f1f727b8c03..00000000000
--- a/common/predictive-text/testing/one-stage-embedded-webworker/build.sh
+++ /dev/null
@@ -1,54 +0,0 @@
-#!/usr/bin/env bash
-#
-# Compiles the Language Modeling Layer for common use in predictive text and autocorrective applications.
-# Designed for optimal compatibility with the Keyman Suite.
-#
-
-## START STANDARD BUILD SCRIPT INCLUDE
-# adjust relative paths as necessary
-THIS_SCRIPT="$(readlink -f "${BASH_SOURCE[0]}")"
-. "${THIS_SCRIPT%/*}/../../../../resources/build/build-utils.sh"
-. "$KEYMAN_ROOT/resources/shellHelperFunctions.sh"
-## END STANDARD BUILD SCRIPT INCLUDE
-
-display_usage ( ) {
- echo "build.sh [-clean]"
- echo
- echo " -clean to erase pre-existing build products before a re-build"
-}
-
-SOURCE="testing/one-stage-embedded-webworker"
-
-echo "Node.js + dependencies check"
-npm install --no-optional
-
-if [ $? -ne 0 ]; then
- builder_die "Build environment setup error detected! Please ensure Node.js is installed!"
-fi
-
-# A nice, extensible method for -clean operations. Add to this as necessary.
-clean ( ) {
- rm -rf "./*.js"
- if [ $? -ne 0 ]; then
- builder_die "Failed to erase the prior build."
- fi
-}
-
-# Process command-line arguments
-while [[ $# -gt 0 ]] ; do
- key="$1"
- case $key in
- -clean)
- clean
- ;;
- esac
- shift # past the processed argument
-done
-
-npm run tsc -- -p $SOURCE/tsconfig.json
-
-if [ $? -ne 0 ]; then
- builder_die "Compilation failed."
-fi
-
-echo "Typescript compilation successful."
\ No newline at end of file
diff --git a/common/predictive-text/testing/one-stage-embedded-webworker/index.html b/common/predictive-text/testing/one-stage-embedded-webworker/index.html
deleted file mode 100644
index 244f4aa2833..00000000000
--- a/common/predictive-text/testing/one-stage-embedded-webworker/index.html
+++ /dev/null
@@ -1,42 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- Embedded WebWorker test
-
-
-
-
-
-
-
-
-
- LM Layer Testing - One-Stage Embedded WebWorkers
- This page serves as a prototype for embedding a WebWorker's code within its "master" script
- across the TypeScript transpilation boundary.
-
-
-
-
-
-
-
diff --git a/common/predictive-text/testing/one-stage-embedded-webworker/main.ts b/common/predictive-text/testing/one-stage-embedded-webworker/main.ts
deleted file mode 100644
index 5d15ae88b58..00000000000
--- a/common/predictive-text/testing/one-stage-embedded-webworker/main.ts
+++ /dev/null
@@ -1,52 +0,0 @@
-// Useful for passing class constructors
-type Workable = {
- new (...args: any[]): T;
- // Requires a static implementation.
- onmessage(e: any): void;
-};
-
-class A {
- a(x: number, y: number):number {
- return x + y;
- }
-}
-
-var WorkerGlobals = {
- counter: 0,
- a: A
-}
-
-class WorkerCore {
- static WorkerGlobals = WorkerGlobals;
- //static counter: number;
-
- static onmessage(e: any) {
- WorkerGlobals.counter++;
-
- console.log("Message received from main page: ", e.data);
-
- // Forces TypeScript to interpret this line as plain JavaScript, as it uses a non-Worker definition.
- // @ts-ignore
- postMessage(WorkerGlobals.counter);
- }
-}
-
-function createWorkerFromClasses(globals: object, fn: Workable