-
-
Notifications
You must be signed in to change notification settings - Fork 109
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
epic: conversion of Keyman Engine for Web to ES modules 🧩 #8560
Conversation
User Test ResultsTest specification and instructions
Test Artifacts
|
For any changes before this point, refer to #8047 and its descendant PRs, which were all merged properly after reviews - that is, before the accidental merge disaster triggered by merging #8549, which had its base branch improperly set. Anything after this point is from work after the necessary git-reversion shenanigans that were needed to patch up the state of the repo. |
Co-authored-by: Marc Durdin <marc@durdin.net>
Co-authored-by: Marc Durdin <marc@durdin.net>
…public-api-clarity
…st-script-loading change(web): web integration test-script loading 🧩
docs(web): demarcation of methods supporting Web's public API 🧩
TEST_OTHERS: PASSED TEST_MAIN_WEB: PASSED - Though an issue did arise for one of the tests due to differences between a test keyboard's phone and tablet layouts. I've made tweaks accordingly. The quick version there:
|
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
LGTM
Changes in this pull request will be available for download in Keyman version 17.0.130-alpha |
This is the base branch for an ongoing conversion of Keyman Engine for Web code; when complete, it will be based upon use of ES modules rather than the old "namespace"-style structure it was previously using.
Other goals include complete modularization of Keyman Engine for Web's on-screen keyboard component. While still included in KMW, it will also be able to function independently and be compilable as a standalone project. As we are considering reuse of Web's OSK within the desktop-platform Keyman apps, this will be a very notable step toward accomplishing such a goal.
At this time, this branch also includes an update for Web's README.md corresponding to the changeset from the 📜 set of Web code reorganization PRs ending with #7831. (It should be re-updated again near completion.)
Approximate state of modularization so far (so GitHub won't hide the comment on us):
(This technically includes changes from not-yet-published commits, but it's pretty accurate to where things are headed.)
Note that the
element-wrappers
child package will be referenced by theapp/browser
target, which is not included in the graph above. (It'd rest higher up.)Pending tasks of note:
Fully modularize all of KMW
Unit test scripts for CI builds should be defined in the new ./ci.sh test action from feat(web): implements shell scripting for CI release-build configurations 📜 #8001, rather than Web's ./build.sh or ./test.sh.
chore(web): Eliminate module deep-references 🧩 #8148
Address, then resolve all comments for change(web): element wrapper subpackage modularization 🧩 #8055.
SO MANY loose threads for change(web): spins off the OSK component as its own subproject, converts it to use ES modules 🧩 #8056... but there's no clear checklist for them.
Ensure that no regression in line with bug(web/engine): incorrect CSS classes for keyboards with embedded namespacing #3910 occurs. (Can be expensive long-term if we let that one slip by!)
(Verified with chore(web): final modularization cleanup 🧩 #8891)
Follow-up on refactor(web): browser focus-maintenance states 🧩 #8624 (comment): duplication of OSK hide & show events
There are some notable inconsistencies with internal event nomenclature, as noted by refactor(web): proper modularization, implementation of documented API events 🧩 #8591 (comment)
I've probably mucked up a lot of the tsconfig project references. It's "fine" when using our build script infrastructure, but it'd likely lead to unintended compilation issues if someone were to ignore them.
It would be wise to look through the various build-bundler.js implementations and determine a common set of config options that could be inherited by all components.
It would also be wise to look through all the tsconfig.json configurations and determine the maximal common set for Web.
Test against this keyboard: https://help.keyman.com/keyboard/english_shavian_qwerty/1.0/english_shavian_qwerty
K_ROPT
(the "hide keyboard" key) on the touch layout, even in-app. An edge case I'll easily miss if not careful.As requested at fix(web): KMW recorder modularization, restoration 🧩 #8821 (comment), we should add explicit documentation for public-API functions and methods.
Thorough testing of selection, start-of-context behavior, etc.
Re user-testing:
Before merging, run a full regression-test suite on KMW and the mobile apps in order to find possible regressions.
Update keymanweb.com to use boolean
false
instead of string'false'
for KMW'ssetActiveOnRegister
initialization option when using KMW 17.0+: change(web): facilitates differentiated configuration objects for KMW variants 🧩 #8458 (comment)Note: Refer also to #8047, the original version of this PR before a
git merge
disaster happened on what was intended as a child PR.User Testing
Due to the scale of user testing involved, the actual user tests will be posted under separate issues:
TEST_MAIN_WEB: See #9037 / #9037 (comment).
TEST_OTHERS: See #9039 / #9039 (comment)
TBD(?): do the mobile apps need their own full regression tests again?