Commit graph

32899 commits

Author SHA1 Message Date
Eberhard Beilharz
98fa9e3003
fix(web): add unit tests for DeadkeyTracker and fix a few bugs
- initialize `Deadkey.matched` in c'tor
- fix `Deadkey.equal` method
- verify deadkey exists before removing it in `DeadkeyTracker.remove`
- add unit tests for DeadkeyTracker

Test-bot: skip
2025-11-12 19:39:18 +01:00
Eberhard Beilharz
9710f5b06a
chore(web): remove duplicate deadkeys.ts
The file sneaked in through a merge/rebase.

Build-bot: skip
Test-bot: skip
2025-11-12 19:37:57 +01:00
Marc Durdin
dbb5f43d29
refactor(web): text-store: rename getDeadkeyCaret to getCaret
Also renames internal `_dks` to `_deadkeys`.

Test-bot: skip
2025-11-12 19:35:21 +01:00
Eberhard Beilharz
081e72b7ca
maint(core): fix option defaults for Meson >= 1.1 🍒
Meson 1.1 changed the name of the options file from `meson_options.txt`
to `meson.options`. Currently we're stuck with Meson 1.0 as minimum
Meson version because we still support Ubuntu 22.04 Jammy, but on some
machines a newer version of meson gets installed which causes the
options to be ignored.

The first attempt to simply symlink or copy `meson_options.txt` to
`meson.options` failed because git on Windows doesn't support symlinks
by default, and Meson complains if it finds two options files (#15127).

Fortunately not having an options file is only a problem for Core where
we have one option in the options file that defaults to true. The solution
implemented in this change is to always pass the option to Meson.

Cherry-pick-of: #15131
Test-bot: skip
2025-11-12 19:30:20 +01:00
Marc Durdin
03755fb3fd
Merge pull request #15111 from keymanapp/maint/web/build-script-perf
maint(web): cleanup web/**/build.sh for consistency and build performance 🎼
2025-11-11 07:19:51 +01:00
Marc Durdin
d07dbfefd6 chore(web): npm install and remove unused dep 2025-11-11 06:31:33 +01:00
Marc Durdin
a177526dbe
Merge branch 'epic/web-core' into maint/web/build-script-perf 2025-11-10 14:59:57 +01:00
Marc Durdin
cf1add0bb4
Merge pull request #15112 from keymanapp/fix/web/dont-reset-context-with-beep
fix(web): don't reset context cache with beep 🎼
2025-11-10 14:51:06 +01:00
Marc Durdin
a8339bd565
Merge branch 'epic/web-core' into maint/web/build-script-perf 2025-11-10 14:50:59 +01:00
Marc Durdin
bdca09bdeb
Merge pull request #15107 from keymanapp/refactor/web/sentry-manager-to-common-web
refactor(web): move sentry-manager and es-bundling to common 🎼
2025-11-10 14:49:58 +01:00
Marc Durdin
0c6c9a5f9e
Merge pull request #15124 from keymanapp/auto/A19S15-merge-master-into-web-core
auto: A19S15 merge master into web-core 🎼
2025-11-07 17:56:45 +01:00
Marc Durdin
aa6b3c328e chore: Merge branch 'epic/web-core' into auto/A19S15-merge-master-into-web-core 2025-11-07 14:23:43 +01:00
Marc Durdin
5b6540a6eb
Merge pull request #15102 from keymanapp/refactor/web/downgrade-web-utils-from-package-to-module
refactor(web): change @keymanapp/web-utils to keyman/common/web-utils 🎼
2025-11-07 11:42:33 +01:00
Marc Durdin
db187e52ad fix(web): don't clear context when beep happens
After review with @ermshiperete, we decided to remove this. It is
unclear to me why we were ever clearing the context when a beep was
triggered by the keyboard. This is legacy from v2.0 of KeymanWeb, and I
suspect it's an edge case that no one has ever noticed, but I can't see
a reason to keep it.

Test-bot: skip
2025-11-07 09:58:46 +00:00
Marc Durdin
feff055d8a chore(web): Merge remote-tracking branch 'origin/epic/web-core' into refactor/web/downgrade-web-utils-from-package-to-module 2025-11-07 09:25:10 +00:00
Marc Durdin
8eb7e6b0d4 maint(web): cleanup web/**/build.sh for consistency and build performance
* Simplify the build dependency / child tree
* Split building and testing tooling so we don't rebuild components
* Fixup expected outputs to avoid repeated builds of components
* Remove unused dependency references
* Move test.sh targets into build.sh, so that testing doesn't lose
  dependency tracking and cause unnecessary rebuilds. (Note that I have
  not yet deleted test.sh.)
* Make predictive-text a direct child of engine, so that we don't build
  it twice (or even more times)

Test-bot: skip
2025-11-07 10:08:38 +01:00
Eberhard Beilharz
9376f08761
Merge pull request #15110 from keymanapp/chore/web/codereview
chore(web): apply suggestions from code review 🎼
2025-11-07 08:23:05 +01:00
Eberhard Beilharz
424fc59271
Merge pull request #15109 from keymanapp/refactor/web/element-text-stores
refactor(web): remove duplicate element-text-stores folder 🎼
2025-11-07 08:22:46 +01:00
Eberhard Beilharz
7a7dcf8878
chore(web): apply suggestions from code review
Theses changes come out of code review of #12291.

Follow-up-of: #12291
Test-bot: skip
2025-11-06 19:13:40 +01:00
Eberhard Beilharz
fb728d922d
refactor(web): remove duplicate element-text-stores folder
Test-bot: skip
2025-11-06 19:12:49 +01:00
Keyman Server
2069d7fd44
Merge pull request #15108 from keymanapp/auto/version-master-19.0.158
auto: increment master version to 19.0.158
2025-11-06 19:03:44 +01:00
Keyman Build Agent
c58ce35248 auto: increment master version to 19.0.158
Test-bot: skip
Build-bot: skip
2025-11-06 12:01:22 -06:00
Marc Durdin
86a903dcf5 refactor(web): move sentry-manager and es-bundling to common
sentry-manager is used by Keyman Engine for Android and Keyman Engine
for iOS, but not directly by KeymanWeb, nor does it have any
dependencies on /web. So it does not make sense to keep it under /web.

es-bundling is used by sentry-manager and potentially other /common/web
tools in the future, so moving it under /common/tools makes it more
consistent in the future.

This is part of simplifying the web source tree; these changes do not
make significant build performance differences at this time.

Test-bot: skip
2025-11-06 15:28:04 +01:00
Marc Durdin
5b37e843be
Merge pull request #15106 from keymanapp/refactor/web/defaultContextMgr
refactor(web): change default export of ContextManager 🎼
2025-11-06 14:15:24 +01:00
Marc Durdin
eb8e08ab3c
Merge pull request #15093 from keymanapp/refactor/web/merge-engine-modules
refactor(web): merge engine modules 🎼
2025-11-06 14:14:40 +01:00
Marc Durdin
2e51955055 chore(web): Merge branch 'refactor/web/merge-engine-modules' into refactor/web/downgrade-web-utils-from-package-to-module 2025-11-06 14:07:19 +01:00
Marc Durdin
d94292959c chore(web): Merge branch 'epic/web-core' into refactor/web/merge-engine-modules 2025-11-06 10:54:25 +01:00
Eberhard Beilharz
5a324c2d42
refactor(web): change default export of ContextManager
This change replaces the default export of ContextManager with a regular
export.

Test-bot: skip
2025-11-06 08:10:51 +01:00
Marc Durdin
1f8f5d8796
Merge branch 'refactor/web/merge-engine-modules' into refactor/web/downgrade-web-utils-from-package-to-module 2025-11-06 08:08:38 +01:00
Eberhard Beilharz
e519d12032
Merge pull request #15096 from keymanapp/refactor/web/textStoreInterface
refactor(web): extract minimal TextStore interface that LanguageProcessor can use 🎼
2025-11-06 08:07:29 +01:00
Eberhard Beilharz
698b22f269
Merge pull request #15092 from keymanapp/refactor/web/outputtarget
refactor(web): rename OutputTarget related classes 🎼

Rename the OutputTarget related classes to better communicate what they are doing - they are interfacing with the text and thus roughly correspond to the TextStore on desktop platforms.
2025-11-06 08:06:59 +01:00
Marc Durdin
6cf378daf8 chore(web): address review comments 2025-11-06 07:51:43 +01:00
Darcy Wong
36c1e47bed
Merge pull request #15053 from keymanapp/chore/common/test9469
chore(common): Consolidate test9469.js keyboard to `/common/test/keyboards/` 🚛
2025-11-06 13:24:47 +07:00
Marc Durdin
41c9cef797 refactor(web): change @keymanapp/web-utils to keyman/common/web-utils
Removes the need for package.json references for @keymanapp/web-utils,
and relies on bundler to include keyman/common/web-utils when building.
2025-11-06 07:24:36 +01:00
Darcy Wong
f908546969
Merge pull request #15034 from keymanapp/chore/common/platform-rules
chore(common): Consolidate platformtest.js keyboard to `/common/test/keyboards/` 🚛
2025-11-06 13:24:14 +07:00
Keyman Server
aaa2fc500d
Merge pull request #15105 from keymanapp/auto/version-master-19.0.157
auto: increment master version to 19.0.157
2025-11-05 19:04:05 +01:00
Keyman Build Agent
a78d68662e auto: increment master version to 19.0.157
Test-bot: skip
Build-bot: skip
2025-11-05 12:01:53 -06:00
Eberhard Beilharz
a9f0e2d212
refactor(web): address code review comments
- rename TextStoreTranscriptionInterface → TextStoreLanguageProcessorInterface
- also fixup references to TextStore in languageProcessor.interface.ts
2025-11-05 16:54:16 +01:00
Eberhard Beilharz
6c755e7c86
refactor(web): address code review comments 2025-11-05 15:58:59 +01:00
Marc Durdin
85b46c3f2c
Merge pull request #15091 from keymanapp/chore/windows/new-timestamp-server
maint(windows): new timestamp server for test signing
2025-11-05 08:06:12 +01:00
Marc Durdin
ab2561619c
Merge pull request #15088 from keymanapp/fix/developer/11892-clear-package-version-if-follow-keyboard-version
fix(developer): remove package version if FollowKeyboardVersion is set in Package Editor
2025-11-05 08:05:58 +01:00
Markus Greiner
f92483d630
Merge pull request #14900 from keymanapp/fix/common/match-container-permissions
maint(resources): Docker container changes permissions to match the file owner uid and gid
2025-11-04 23:06:28 +01:00
Markus Greiner
473b177050 Handle uid and gid the same way as in the other Dockerfiles 2025-11-04 22:53:26 +01:00
Markus Greiner
e86c419a42
Update resources/docker-images/android/Dockerfile
Forgotten to remove when CHANGE_PERMISSIONS was invented.

Co-authored-by: Eberhard Beilharz <ermshiperete@users.noreply.github.com>
2025-11-04 22:48:00 +01:00
Eberhard Beilharz
57681ce516
Merge pull request #14965 from keymanapp/chore/linux/cherry-pick/changelog
chore(linux): Update debian changelog 🍒
2025-11-04 19:28:46 +01:00
Marc Durdin
9d2c23e0d3 refactor(web): merge engine modules
In order to simplify and make the build significantly faster, as well as
reduce duplication of configuration files, we have merged most of the
engine modules into a single module, engine:
  * engine/attachment
  * engine/core-processor
  * engine/dom-utils
  * engine/element-wrappers
  * engine/events
  * engine/interfaces
  * engine/js-processor
  * engine/keyboard
  * engine/keyboard-storage
  * engine/main
  * engine/osk

A few test-specific files have been moved from engine to test, such as
nodeCloudRequester.ts and nodeKeyboardLoader.ts.
2025-11-04 19:13:17 +01:00
Eberhard Beilharz
533473c199
refactor(web): extract minimal TextStore interface that LanguageProcessor can use 2025-11-04 18:22:58 +01:00
Eberhard Beilharz
b169aafa4f
refactor(web): cleanup exports of keyboards module
- explicitly list exports instead of using `*`
- remove `default` exports
2025-11-04 17:14:38 +01:00
Eberhard Beilharz
96275fff2c
refactor(web): cleanup 2025-11-04 17:14:38 +01:00
Eberhard Beilharz
07aa9e7af8
refactor(web): rename eventOutputTarget and outputTargetForElement
- Rename `eventOutputTarget` → `textStoreForEvent`
- Rename `outputTargetForElement` → `textStoreForElement`
2025-11-04 17:14:38 +01:00