Commit graph

4583 commits

Author SHA1 Message Date
Marc Durdin
c8376f95e6 chore: update 19.0 to 20.0 in docs and strings
Test-bot: skip
2026-10-06 15:08:01 +02:00
Marc Durdin
9ad48b66a4
Merge pull request #16726 from keymanapp/chore/common/remove-unused-clearcontext-fix-switch-key-codes
chore(common): remove `clearcontext`,`fix`,`switch`,`key` statements
2026-10-06 10:48:53 +02:00
Marc Durdin
3743fd989b
Merge pull request #16724 from keymanapp/maint/common/code__size
chore(common): move CODE__SIZE declaration to common
2026-10-06 10:48:29 +02:00
Marc Durdin
6d26b05d85
Merge pull request #16723 from keymanapp/fix/developer/16718-statement-use-in-stores
fix(developer): emit compile error when unsupported statements encountered in stores
2026-10-06 10:48:11 +02:00
Marc Durdin
00bfd7f15e
Merge pull request #16717 from keymanapp/fix/developer/16716-warn-on-vk-in-store-index-statement
fix(developer): check `any()` and `index()` for invalid use of virtual keys
2026-10-06 10:47:48 +02:00
Marc Durdin
92111eda18
Update developer/src/kmc-kmn/test/fixtures/invalid-keyboards/error_store_contains_unsupported_statement-return.kmn
Build-bot: skip

Co-authored-by: Eberhard Beilharz <ermshiperete@users.noreply.github.com>
2026-10-06 10:00:10 +02:00
Marc Durdin
3c8304ed94
Merge pull request #16710 from keymanapp/chore/developer/16699-warn-on-deprecated-language-features
chore(developer): warn on v19 deprecated language features
2026-10-06 07:51:09 +02:00
Marc Durdin
a056d41168 fix(developer): add check for notany for invalid virtual key use 2026-10-06 06:39:02 +02:00
Marc Durdin
10c2402934
chore(developer): add comments for deleted tokens
Build-bot: skip

Co-authored-by: Eberhard Beilharz <ermshiperete@users.noreply.github.com>
2026-10-06 06:29:16 +02:00
Marc Durdin
31aeaf2c52 chore(developer): fix typo in unit test fixture 2026-10-06 06:19:52 +02:00
Marc Durdin
342e543a98
Apply batched suggestions from code review
Co-authored-by: Marc Durdin <marc@durdin.net>
2026-10-06 06:13:20 +02:00
Marc Durdin
7d4b19cdba
Merge pull request #16692 from keymanapp/dependabot/npm_and_yarn/multer-2.4.0
chore(deps): bump multer from 2.3.0 to 2.4.0
2026-10-05 15:55:59 +02:00
Marc Durdin
bc8c9b289d
Merge pull request #16698 from keymanapp/dependabot/npm_and_yarn/developer/src/server/src/win32/trayicon/addon-src/ip-address-10.7.2
chore(deps): bump ip-address from 10.5.0 to 10.7.2 in /developer/src/server/src/win32/trayicon/addon-src
2026-10-05 15:45:49 +02:00
Marc Durdin
669ca4b6fd chore(common): remove clearcontext,fix,switch,key statements
Remove compiler support for `clearcontext`, `fix`, `switch` statements
and remove corresponding `CODE_` definitions, as well as `CODE_KEY`,
which was never used.

These four statements have never been documented and have either never
been implemented, or long been unsupported. An earlier change (#16445)
marked `clearcontext` and `fix` as deprecated for v19 onwards, but
deprecation for an undocumented language feature is an unnecessary step,
so have opted to remove altogether in v19 to reduce complexity. This
means that `VERSION_190` is used now only for compile target
deprecations.

Follows: #16445
Test-bot: skip
2026-10-05 08:09:12 +02:00
Marc Durdin
620d736c0e chore(common): move CODE__SIZE declaration to common
Remove duplicate CODE__SIZE C++ declarations.

Test-bot: skip
2026-10-03 12:17:39 +02:00
Marc Durdin
ef212c7e66 fix(developer): emit compile error when unsupported statements encountered in stores
When a store contains any unsupported statement (any, baselayout, beep,
call, context, if, index, layer, notany, nul, platform, reset, save,
set, use) or undocumented statement (clearcontext, fix, switch), then
emit a compile error. Previously, compiler would not detect use of these
statements in stores, which could lead to undefined behaviour at
runtime.

At time of writing, eight keyboards in the keyboards repository
(clavbur9, hausa_ajami_qwerty, sil_cameroon_qwerty, sil_cameroon_azerty,
sil_dzongkha, sil_yoruba8, sil_yoruba_bar, sil_yoruba_dot) make use of
either beep or nul in stores. Due to compiler unfolding of any/index
statements for key part of the rule, these would work in some cases, but
this was never supported explicitly nor completely, and so at this point
it is better to prevent misuse and add full support as a future task.

Fixes: #16718
Test-bot: skip
2026-10-03 11:41:42 +02:00
Marc Durdin
6ce0b0e1ac fix(developer): check any() and index() for invalid use of virtual keys
Test is done in kmc-kmn, not kmcmplib, to match existing tests.

Fixes: #16716
2026-10-02 11:56:38 +02:00
Marc Durdin
45755d3894 chore(developer): warn on v19 deprecated language features
* Add deprecation warnings for legacy character code formats, legacy
  `VERSION` header statement (was missing when other header statements
  were checked), `$keymanonly` and `$keymanweb` compile targets.
* Make existing deprecation checks consistent and shift to
  DeprecationChecks.cpp.
* Add unit tests for all deprecated features.

Fixes: #16699
Test-bot: skip
2026-10-02 08:54:10 +02:00
Marc Durdin
4803850814
Merge pull request #16694 from keymanapp/fix/developer/16682-handle-unpaired-surrogates-in-editor-safely
fix(developer): transform unpaired surrogates in editor to U+FFFD
2026-09-30 06:56:54 +02:00
Marc Durdin
a6f60e16e9
Merge pull request #16686 from keymanapp/fix/developer/16683-kmc-generate-git-ignore-fix
fix(developer): handle .gitignore in npm-based installations of kmc-generate
2026-09-30 06:21:52 +02:00
Marc Durdin
d6042f989e
Apply suggestion from @ermshiperete
Co-authored-by: Eberhard Beilharz <ermshiperete@users.noreply.github.com>
2026-09-30 06:21:10 +02:00
Marc Durdin
a63a131c36
Merge pull request #16697 from keymanapp/fix/developer/16681-kmc-package-empty-keyboard-name
fix(developer): handle missing `&name` store in package compiler
2026-09-30 06:19:40 +02:00
dependabot[bot]
9a2f95b654
chore(deps): bump ip-address
Bumps [ip-address](https://github.com/beaugunderson/ip-address) from 10.5.0 to 10.7.2.
- [Release notes](https://github.com/beaugunderson/ip-address/releases)
- [Commits](https://github.com/beaugunderson/ip-address/compare/v10.5.0...v10.7.2)

---
updated-dependencies:
- dependency-name: ip-address
  dependency-version: 10.7.2
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-09-29 07:45:24 +00:00
Marc Durdin
53a190b1ae fix(developer): handle missing &name store in package compiler
If a .kmx file did not include an `&name` store, then the compiler would
fail with an internal error. In this situation, fall back to the kmx id
(filename without extension).

Fixes: #16681
Fixes: KEYMAN-DEVELOPER-218
Test-bot: skip
2026-09-29 08:45:52 +02:00
Marc Durdin
27d354cf10 fix(developer): transform unpaired surrogates in editor to U+FFFD
Avoid `URIError` in `encodeURIComponent()` by transforming any unpaired
surrogates in text editor buffer to `U+FFFD`` before sending data to
backend.

Fixes: #16682
Fixes: KEYMAN-DEVELOPER-39T
Test-bot: skip
2026-09-29 06:54:01 +02:00
dependabot[bot]
208ea6c153
chore(deps): bump multer from 2.3.0 to 2.4.0
Bumps [multer](https://github.com/expressjs/multer) from 2.3.0 to 2.4.0.
- [Release notes](https://github.com/expressjs/multer/releases)
- [Changelog](https://github.com/expressjs/multer/blob/main/CHANGELOG.md)
- [Commits](https://github.com/expressjs/multer/compare/v2.3.0...v2.4.0)

---
updated-dependencies:
- dependency-name: multer
  dependency-version: 2.4.0
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-09-29 01:25:52 +00:00
Marc Durdin
556f2864b8 fix(developer): handle .gitignore in npm-based installations of kmc-generate
npm does not package .gitignore files, which was causing the templates
to be incomplete and made kmc-generate crash when installed through npm.
Rename the file to 'gitignore' within the template, and dynamically
handle it during the run to workaround.

Fixes: #16683
Fixes: KEYMAN-DEVELOPER-2QS
2026-09-28 15:01:02 +02:00
Marc Durdin
e36b009a83 fix(developer): support Rich Edit in Charmap drag + drop
RichEdit controls have different parameters for EM_CHARFROMPOS.

Fixes: #16684
Fixes: KEYMAN-DEVELOPER-2S7
Test-bot: skip
2026-09-28 14:29:06 +02:00
Marc Durdin
75c5d8f416
Merge pull request #16665 from keymanapp/chore/developer/16646-touch-layout-editor-build
chore(developer): cleanup tike build.sh for touch-layout-editor
2026-09-25 15:51:46 +02:00
Marc Durdin
1afa9aca5d
Merge pull request #16661 from keymanapp/docs/web/16660-deprecate-moveToElement
docs(web): deprecate `keyman.moveToElement(elem)` API
2026-09-25 15:26:24 +02:00
Marc Durdin
5dd81f8b8b
Merge pull request #16543 from keymanapp/dependabot/npm_and_yarn/multer-2.3.0
chore(deps): bump multer from 2.2.0 to 2.3.0
2026-09-25 13:52:51 +02:00
Marc Durdin
21f6ef7161 chore(developer): cleanup tike build.sh for touch-layout-editor
And add another TODO comment for #16646.

Relates-to: #16646
Test-bot: skip
2026-09-25 13:27:03 +02:00
Marc Durdin
5e710f885c docs(web): deprecate keyman.moveToElement(elem) API
Use instead `elem.focus()`.

Fixes: #16660
Test-bot: skip
2026-09-25 08:19:57 +02:00
dependabot[bot]
ed4d33f5b8
chore(deps-dev): bump grunt
Bumps [grunt](https://github.com/gruntjs/grunt) from 1.4.1 to 1.5.3.
- [Release notes](https://github.com/gruntjs/grunt/releases)
- [Changelog](https://github.com/gruntjs/grunt/blob/main/CHANGELOG.md)
- [Commits](https://github.com/gruntjs/grunt/compare/v1.4.1...v1.5.3)

---
updated-dependencies:
- dependency-name: grunt
  dependency-version: 1.5.3
  dependency-type: direct:development
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-09-24 08:04:06 +00:00
Marc Durdin
d7e231a919 chore(developer): Merge branch 'change/developer/touch-layout-reorganize-files' into change/developer/touch-layout-editor-typescript 2026-09-24 09:06:57 +02:00
Marc Durdin
7bdf62f0bf chore(developer): Merge branch 'master' into change/developer/touch-layout-reorganize-files 2026-09-24 09:05:12 +02:00
Marc Durdin
641fe66396
Merge branch 'change/developer/touch-layout-reorganize-files' into change/developer/touch-layout-editor-typescript
Some checks failed
Keyman Build Summary / Summarize build status checks (push) Has been cancelled
2026-09-21 13:41:43 +07:00
Marc Durdin
c6c528c055
Merge branch 'master' into change/developer/touch-layout-reorganize-files
Some checks failed
Keyman Build Summary / Summarize build status checks (push) Has been cancelled
2026-09-21 13:41:35 +07:00
Marc Durdin
e0fb38b211
Merge branch 'master' into fix/developer/touch-editor-crashes
Some checks failed
Keyman Build Summary / Summarize build status checks (push) Has been cancelled
2026-09-21 13:41:00 +07:00
Marc Durdin
a522982dac fix(developer): address crashes in touch layout editor
Crashes reported in user testing on #16520.

* Fix crash selecting layer after deleting a layer (from #16509)
* Fix crash resetting 'next layer' for flicks after layer deletion
  (long-standing issue)

See-also: #16509
See-also: #16520
Cherry-picked-from: 099d039952
2026-09-16 05:52:48 +02:00
Marc Durdin
099d039952 fix(developer): address crashes in touch layout editor
Some checks failed
Keyman Build Summary / Summarize build status checks (push) Has been cancelled
* Fix crash dropping chars from character map (new issue)
* Fix crash deleting layers (from #16509)
* Fix crash resetting 'next layer' for flicks after layer deletion
  (long-standing issue)
2026-09-16 05:48:13 +02:00
Marc Durdin
05a78f3e69
Merge pull request #16538 from keymanapp/fix/developer/12668-trim-new-words-in-wordlist-editor
fix(developer): trim new words entered into the wordlist editor
2026-09-16 10:20:04 +07:00
Marc Durdin
5d98b66c2e
Merge pull request #16539 from keymanapp/maint/developer/remove-ajv-dep-from-kmc-convert
maint(developer): remove unused ajv dependency from kmc-convert
2026-09-10 11:46:29 +07:00
dependabot[bot]
b02ff51ba5
chore(deps): bump multer from 2.2.0 to 2.3.0
Bumps [multer](https://github.com/expressjs/multer) from 2.2.0 to 2.3.0.
- [Release notes](https://github.com/expressjs/multer/releases)
- [Changelog](https://github.com/expressjs/multer/blob/main/CHANGELOG.md)
- [Commits](https://github.com/expressjs/multer/compare/v2.2.0...v2.3.0)

---
updated-dependencies:
- dependency-name: multer
  dependency-version: 2.3.0
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-09-08 22:20:50 +00:00
dependabot[bot]
cb0c368478
chore(deps): bump qs and express
Bumps [qs](https://github.com/ljharb/qs) to 6.16.0 and updates ancestor dependency [express](https://github.com/expressjs/express). These dependencies need to be updated together.


Updates `qs` from 6.15.2 to 6.16.0
- [Changelog](https://github.com/ljharb/qs/blob/main/CHANGELOG.md)
- [Commits](https://github.com/ljharb/qs/compare/v6.15.2...v6.16.0)

Updates `express` from 4.22.2 to 5.2.1
- [Release notes](https://github.com/expressjs/express/releases)
- [Changelog](https://github.com/expressjs/express/blob/master/History.md)
- [Commits](https://github.com/expressjs/express/compare/v4.22.2...v5.2.1)

---
updated-dependencies:
- dependency-name: express
  dependency-version: 5.2.1
  dependency-type: direct:production
- dependency-name: qs
  dependency-version: 6.16.0
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-09-07 09:20:28 +00:00
Marc Durdin
81585e5744 maint(developer): remove unused ajv dependency from kmc-convert
Test-bot: skip
2026-09-07 10:25:45 +02:00
Marc Durdin
862c5cefa1 fix(developer): trim new words entered into the wordlist editor
Fixes: #12668
2026-09-07 10:01:12 +02:00
Marc Durdin
98fee32e90 change(developer): refactor constants into separate object in touch layout editor
Some checks failed
Keyman Build Summary / Summarize build status checks (push) Has been cancelled
In order to resolve initialization order (see instigating property
`builder.lastPresentations`), split all constants into a separate object
`builderConstants`, inverting the dependency, which is both cleaner and
the first step of removing the multi-module initialization of a single
`builder` variable.
2026-09-07 07:12:54 +02:00
Marc Durdin
d86b2b5926 chore(developer): move jquery and jqueryui types into source tree
Take the @types/jquery and @types/jqueryui packages out of the
devDependencies and place the index.d.[c]ts files into the ext folder.
This is needed because of fragility elsewhere with implicitly imported
types, which is described for resolution in #16535. Keeping this as a
separate commit as preference would be to have these dependencies
managed through npm long-term.

See-also: #16535
2026-09-07 06:50:22 +02:00
Marc Durdin
c1abf5f7ba change(developer): move touch layout editor to typescript
Make minimal changes to Touch Layout Editor source files in order to
build with Typescript with noImplicitAny=false (to be cleaned up later).
Also make source files accessible through the web server for Developer
Console use.
2026-09-07 06:50:17 +02:00