Skip to content
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

chore(common): Merge beta to master for Sprint B17S5 #11217

Merged
merged 264 commits into from
Apr 12, 2024
Merged
Show file tree
Hide file tree
Changes from 250 commits
Commits
Show all changes
264 commits
Select commit Hold shift + click to select a range
fd30786
feat(web): an extra unit test
jahorton Feb 27, 2024
b09a1ba
change(web): concurrency lock-management ordering
jahorton Feb 27, 2024
495ee46
chore(web): minor extra cleanup
jahorton Feb 29, 2024
d74bc8f
docs(web): doc-comment typo
jahorton Feb 29, 2024
1c2baf2
chore(web): common key-preview cancellation func
jahorton Mar 1, 2024
3755de7
fix(web): pending-source tracking cleanup
jahorton Mar 4, 2024
0046eef
fix(ios): bad initial in-app layout
Mar 5, 2024
c6a2873
chore(ios): typo in comment
Mar 5, 2024
a4cdc92
fix(ios): delayed banner
Mar 5, 2024
78fb914
chore(ios): removes the "Show Banner" settings option
Mar 5, 2024
8f1feea
chore(ios): drops isTopBarActive, activeTopBarHeight
Mar 6, 2024
a8a49d8
chore(ios): integrates showBanner within init-followup
Mar 6, 2024
d04ede0
Merge pull request #10930 from keymanapp/fix/ios/delayed-banner
jahorton Mar 7, 2024
b548c88
fix(web): proper linkage of sources to events
jahorton Mar 7, 2024
727a3cf
fix(web): robustness handling with new source-track style
jahorton Mar 7, 2024
bc33823
chore(web): Merge branch 'beta' into fix/web/sticky-preview
jahorton Mar 8, 2024
e5c9cc6
chore(web): Merge branch 'fix/web/sticky-preview' into fix/web/early-…
jahorton Mar 8, 2024
f6fdca2
chore(web): Merge branch 'fix/web/early-matchGesture-abort' into fix/…
jahorton Mar 8, 2024
3075643
chore(web): Merge branch 'fix/web/infinite-model-replacement-loop' in…
jahorton Mar 8, 2024
68f5c01
chore(web): Merge branch 'fix/web/proper-gesture-match-sequencing' in…
jahorton Mar 8, 2024
a618b85
chore(web): Merge branch 'change/web/input-sequentialization' into fi…
jahorton Mar 8, 2024
26a99f0
fix(web): unit test patchup - had incorrect touchend .touches values
jahorton Mar 8, 2024
b6df9ac
fix(web): touchend handler should use .changedTouches, not .touches
jahorton Mar 8, 2024
9b2417d
fix(web): null guards for source Promise closure-capture source when …
jahorton Mar 8, 2024
7a9b47b
chore(developer): add preinit test for keyboard info compiler
markcsinclair Mar 14, 2024
c1b7f00
chore(developer): use unitTestEndpoints to export langtagsByTag
markcsinclair Mar 14, 2024
badc47d
chore(developer): ensure preinit is called indirectly (maintaining te…
markcsinclair Mar 14, 2024
ca084c1
chore(developer): add KeyboardInfoCompiler init test
markcsinclair Mar 18, 2024
daa6384
chore(developer): add KeyboardInfoCompiler returns null if KmpCompile…
markcsinclair Mar 18, 2024
79cd021
chore(developer): add KeyboardInfoCompiler returns null if KmpCompile…
markcsinclair Mar 18, 2024
8a43aa5
chore(developer): add KeyboardInfoCompiler returns null if loadJsFile…
markcsinclair Mar 18, 2024
dbc1e42
chore(developer): add KeyboardInfoCompiler returns null if license is…
markcsinclair Mar 18, 2024
e2088fd
chore(developer): add KeyboardInfoCompiler returns null if fillLangua…
markcsinclair Mar 18, 2024
5c1733e
chore(developer): tighten up stub definitions in tests
markcsinclair Mar 18, 2024
5d4a56f
chore(developer): add write artifacts to disk test
markcsinclair Mar 19, 2024
0e2ff2b
chore(developer): add mapKeymanTargetToPlatform returns correct platf…
markcsinclair Mar 19, 2024
628ac27
chore(developer): add kmxFileVersionToString returns correct strings …
markcsinclair Mar 19, 2024
9c3e55e
chore(developer): add loadKmxFiles returns empty array if .kmx file i…
markcsinclair Mar 20, 2024
7353c30
chore(developer): add loadKmxFiles throws error if .kmx file is missi…
markcsinclair Mar 20, 2024
8abe3f6
chore(developer): add loadKmxFiles throws error if .kmx file is missi…
markcsinclair Mar 20, 2024
9119256
chore(developer): Merge branch 'test/developer/keyboard-info-compiler…
markcsinclair Mar 20, 2024
305e6f5
chore(developer): recover from failed merge
markcsinclair Mar 20, 2024
a54053b
fix(web): prevent layer switch key from erasing selection
mcdurdin Mar 21, 2024
8fbb0c3
chore(web): update tests
mcdurdin Mar 21, 2024
ea83664
chore(web): update test fixture
mcdurdin Mar 21, 2024
5681eea
chore(developer): Merge branch 'beta' into test/developer/keyboard-in…
markcsinclair Mar 25, 2024
b542a8d
chore(developer): add loadKmxFiles can handle two .kmx files test
markcsinclair Mar 25, 2024
18ba46d
fix(common): fix an additional issue on illegal UnicodeSets
srl295 Mar 22, 2024
28bdbbc
bug(core): repro for assertion
srl295 Mar 22, 2024
67838e6
fix(developer,core): fix for marker substitution in sets
srl295 Mar 25, 2024
5a5877a
chore(developer): add loadJsFile throws error if .js file is invalid …
markcsinclair Mar 25, 2024
f773066
fix(developer): store set variables in literal form, unescape in tran
srl295 Mar 25, 2024
f2ad7d4
fix(common): further improvement to string/set substitution
srl295 Mar 25, 2024
56add09
fix(developer): error if a regex pattern matches the empty string 🙀
srl295 Mar 25, 2024
54e59e4
fix(core): dx: don't choke on embedded non-ascii in ldml .xml test files
srl295 Mar 25, 2024
18c6ecf
fix(core): fix 2 marker cases in ldml_event_state::emit_difference 🙀
srl295 Mar 25, 2024
72de9be
feat(developer): scaffolding for comma in modifiers 🙀
srl295 Mar 25, 2024
d6e080d
feat(developer): implement comma in modifiers 🙀
srl295 Mar 25, 2024
baeb3c8
fix(developer): fix an additional issue on illegal UnicodeSets
srl295 Mar 26, 2024
84b6488
fix(core): dx: don't choke on embedded non-ascii in ldml .xml test files
srl295 Mar 27, 2024
adb9fdb
chore(web): Merge branch 'beta' into fix/web/sticky-preview
jahorton Mar 27, 2024
37b31f1
chore(web): Merge branch 'fix/web/sticky-preview' into fix/web/early-…
jahorton Mar 27, 2024
a6144c0
chore(web): Merge branch 'fix/web/early-matchGesture-abort' into fix/…
jahorton Mar 27, 2024
45e43d4
chore(web): Merge branch 'fix/web/infinite-model-replacement-loop' in…
jahorton Mar 27, 2024
70836b4
chore: Apply suggestions from code review
mcdurdin Mar 27, 2024
ff4ddd9
feat(developer/compilers): better unit test for suggestion accessibility
jahorton Mar 27, 2024
38d80bc
chore(web): Merge branch 'fix/web/proper-gesture-match-sequencing' in…
jahorton Mar 27, 2024
75dff78
chore(web): Merge branch 'change/web/input-sequentialization' into fi…
jahorton Mar 27, 2024
62eec26
replace characters during key processing by using deleted_context fie…
sgschantz Mar 27, 2024
edfed74
fix(web): update import for isEmptyTransform
mcdurdin Mar 27, 2024
9aac994
chore(developer/compilers): comment typo fix
jahorton Mar 27, 2024
478cc61
Merge pull request #10931 from keymanapp/chore/ios/remove-show-banner…
jahorton Mar 27, 2024
e8a8590
fix(core): revert some interim fixes
srl295 Mar 27, 2024
8b57230
chore(core): optimize ldml_event_state::emit_difference() when no dif…
srl295 Mar 27, 2024
193d7d0
fix(developer): fix an additional issue on illegal UnicodeSets
srl295 Mar 27, 2024
0bf30d3
chore(linux): Update debian changelog
ermshiperete Mar 27, 2024
3f42b0b
fix(core): fix actions_normalize() use of UnicodeString
srl295 Mar 28, 2024
ca34b5f
fix(core): fix actions_normalize() UChar32 calculation
srl295 Mar 28, 2024
677b249
change(web): keyboard swap keeps old kbd active until new kbd is ready
jahorton Mar 28, 2024
76eeb9c
change(web): timing of banner configuration
jahorton Mar 28, 2024
9e36922
fix(developer): prevent error when scrolling touch layout editor with…
mcdurdin Mar 28, 2024
1bc5db3
fix(common): make `isEmptyTransform` return true if passed a nullish …
mcdurdin Mar 28, 2024
d894db7
fix(core): add an assert on code_points_to_delete
srl295 Mar 22, 2024
b46e320
Merge pull request #11066 from keymanapp/fix/core/assert-code_points_…
srl295 Mar 28, 2024
adc4219
chore(core): fix actions_normalize() pointer math - tests
srl295 Mar 28, 2024
d9c97c0
Merge pull request #11065 from keymanapp/fix/common/unicodeset-errcheck
srl295 Mar 28, 2024
5f836d7
Merge pull request #11059 from keymanapp/fix/core/11045-assert-marker
srl295 Mar 28, 2024
c1a700d
Merge pull request #11070 from keymanapp/fix/core/11062-error-no-match
srl295 Mar 28, 2024
1ac5bdf
Merge pull request #11071 from keymanapp/fix/core/11057-string-too-long
srl295 Mar 28, 2024
53224cb
Update developer/src/kmc-ldml/src/util/util.ts
srl295 Mar 28, 2024
8d55d0b
Merge pull request #11075 from keymanapp/feat/developer/11040-layr-co…
srl295 Mar 28, 2024
7106b66
Merge pull request #11100 from keymanapp/fix/core/11067-fix-actions-n…
srl295 Mar 28, 2024
92a4a2a
Merge pull request #11094 from keymanapp/chore/core/11057-optimize-ma…
srl295 Mar 28, 2024
3e6ba65
change(ios): better directional-mark trimming
Mar 28, 2024
ad64bdf
chore(developer): failing test for invalid variable name
srl295 Mar 28, 2024
1319832
Merge pull request #10929 from keymanapp/fix/ios/bad-initial-layout
jahorton Mar 28, 2024
7c030e3
Merge pull request #11085 from keymanapp/feat/developer/compilers/bet…
jahorton Mar 28, 2024
5790f63
Merge pull request #11101 from keymanapp/fix/core/11067-fix-actions-n…
mcdurdin Mar 28, 2024
f7a7ce0
chore(developer): Merge branch 'beta' into test/developer/keyboard-in…
markcsinclair Mar 28, 2024
ce1eba6
chore(developer): add const variables for khmer_angor fixtures
markcsinclair Mar 28, 2024
41f5e7f
chore(developer): add const variable for khmer angkor sources
markcsinclair Mar 28, 2024
484316c
chore(developer): remove two commented out imports
markcsinclair Mar 28, 2024
1e21b24
chore(developer): add check fillLanguages returns false for display f…
markcsinclair Mar 28, 2024
e70220e
chore(developer): add check fillLanguages returns false for osk font …
markcsinclair Mar 28, 2024
876c0e7
fix(developer): error on missing variable name
srl295 Mar 28, 2024
313bbd3
feat(core): kmx+ scaffolding for modifiers=default
srl295 Mar 28, 2024
b420ccc
Merge branch 'beta' into feat/developer/11044-error-invalid-var
srl295 Mar 28, 2024
1691a59
Merge branch 'feat/developer/11044-error-invalid-var' into feat/core/…
srl295 Mar 28, 2024
4881d1a
chore(core): dx better err message on embedded test vkeys
srl295 Mar 28, 2024
89f5a0e
fix(core): support default lookup for modifiers
srl295 Mar 28, 2024
0f00199
Merge branch 'feat/core/11072-default-modifier' into chore/core/dx-be…
srl295 Mar 28, 2024
49de9c5
auto: increment beta version to 17.0.298
keyman-server Mar 28, 2024
c0b7c18
Merge pull request #11120 from keymanapp/auto/version-beta-17.0.298
keyman-server Mar 28, 2024
054d9fd
chore(core): dx even better err message on embedded test vkeys
srl295 Mar 28, 2024
0cce667
Merge pull request #11096 from keymanapp/chore/linux/changelog
ermshiperete Mar 28, 2024
4e403e9
Merge pull request #11032 from keymanapp/fix/web/7866-layer-switch-ke…
mcdurdin Mar 29, 2024
ebe258d
Merge pull request #11109 from keymanapp/fix/developer/11107-scroll-t…
mcdurdin Mar 29, 2024
26e9904
Merge pull request #11110 from keymanapp/fix/common/11084-isemptytran…
mcdurdin Mar 29, 2024
d4a0809
Merge branch 'beta' into feat/developer/11044-error-invalid-var
srl295 Mar 29, 2024
cc7ef60
fix(developer): error on missing variable name
srl295 Mar 29, 2024
bca037c
chore(core): support default lookup for modifiers
srl295 Mar 29, 2024
5ae4922
Merge branch 'feat/core/11072-default-modifier' into chore/core/dx-be…
srl295 Mar 29, 2024
ae6f7b5
chore(core): support default lookup for modifiers
srl295 Mar 29, 2024
32b885f
auto: increment beta version to 17.0.299
keyman-server Mar 29, 2024
6864cb3
Merge pull request #11124 from keymanapp/auto/version-beta-17.0.299
keyman-server Mar 29, 2024
ec81a88
change(web): reworks nearest-key detection to avoid layout reflow
jahorton Apr 1, 2024
849a45c
fix(android/engine): Swap selection range if reversed
darcywong00 Apr 1, 2024
42ee06f
Merge pull request #11113 from keymanapp/change/ios/better-dir-mark-t…
jahorton Apr 1, 2024
6034033
get a maximum of 80 characters from current context
sgschantz Apr 1, 2024
f6b9158
Merge pull request #11086 from keymanapp/fix/mac/1643-mishandled-SMP
sgschantz Apr 1, 2024
48d516d
chore(developer): add check fillLanguages constructs keyboard_info.la…
markcsinclair Apr 1, 2024
a50b821
chore(developer): add keyboard_info.languages assert
markcsinclair Apr 1, 2024
f2fdee1
chore(developer): add check fillLanguages can handle two keyboards co…
markcsinclair Apr 1, 2024
3eb8705
chore(developer): add detailed assert for two keyboards
markcsinclair Apr 1, 2024
688fe65
chore(developer): adjust spacing on two keyboatds test expected result
markcsinclair Apr 1, 2024
d53219d
chore(developer): Merge branch 'beta' into test/developer/keyboard-in…
markcsinclair Apr 1, 2024
882dce4
Merge pull request #11117 from keymanapp/feat/developer/11044-error-i…
srl295 Apr 1, 2024
d75bbbe
Merge branch 'beta' into feat/core/11072-default-modifier
srl295 Apr 1, 2024
5615a5e
chore(common): add more references to 0x10000
srl295 Apr 1, 2024
73b951c
Merge branch 'feat/core/11072-default-modifier' into chore/core/dx-be…
srl295 Apr 1, 2024
9b0cd13
auto: increment beta version to 17.0.300
keyman-server Apr 1, 2024
522b0c8
Merge pull request #11131 from keymanapp/auto/version-beta-17.0.300
keyman-server Apr 1, 2024
6db53ae
Merge pull request #11108 from keymanapp/change/web/keyboard-change-e…
jahorton Apr 2, 2024
5b1c853
fix(common,core): support other lookup for modifiers
srl295 Apr 2, 2024
2b9ab8c
fix(android/app): Track previous device orientation for SystemKeyboard
darcywong00 Apr 2, 2024
02f9ce1
fix(developer): handle buffer boundaries in four cases
mcdurdin Apr 2, 2024
1ea4df6
Merge pull request #11127 from keymanapp/fix/android/sub-selection
darcywong00 Apr 2, 2024
707c7ee
chore(developer): remove EN_LANGTAG and replace with dynamic tag from…
markcsinclair Apr 2, 2024
ebeef5f
chore(developer): wrap two uses of stubs in try-catch-finally
markcsinclair Apr 2, 2024
4aa9507
chore(developer): correct a comment
markcsinclair Apr 2, 2024
401cb3c
chore(developer): Merge branch 'beta' into test/developer/keyboard-in…
markcsinclair Apr 2, 2024
9def2da
Merge pull request #11000 from keymanapp/test/developer/keyboard-info…
markcsinclair Apr 2, 2024
3d87036
auto: increment beta version to 17.0.301
keyman-server Apr 2, 2024
4610d1b
Merge pull request #11148 from keymanapp/auto/version-beta-17.0.301
keyman-server Apr 2, 2024
9333dfa
Merge pull request #11118 from keymanapp/feat/core/11072-default-modi…
srl295 Apr 2, 2024
8d2fe35
Merge pull request #11119 from keymanapp/chore/core/dx-better-embedde…
srl295 Apr 2, 2024
a273cbf
fix(windows): decode uri for packageid filename
rc-swag Apr 3, 2024
7ec3072
Merge pull request #10778 from keymanapp/fix/web/sticky-preview
jahorton Apr 3, 2024
cde3807
Merge pull request #10836 from keymanapp/fix/web/early-matchGesture-a…
jahorton Apr 3, 2024
5e30fa7
Merge pull request #10838 from keymanapp/fix/web/infinite-model-repla…
jahorton Apr 3, 2024
23cfb11
Merge pull request #10840 from keymanapp/fix/web/proper-gesture-match…
jahorton Apr 3, 2024
d999877
Merge pull request #10843 from keymanapp/change/web/input-sequentiali…
jahorton Apr 3, 2024
769b611
Merge pull request #10960 from keymanapp/fix/web/queued-closure-sourc…
jahorton Apr 3, 2024
fcad85e
chore(android): Merge remote-tracking branch 'origin/beta' into fix/a…
darcywong00 Apr 3, 2024
ed608e9
Merge pull request #11137 from keymanapp/fix/developer/11092-memory-b…
mcdurdin Apr 3, 2024
debb799
fix(common): upgrade sentry-cli to 2.31.0
mcdurdin Apr 3, 2024
4c881a1
fix typo in comment
sgschantz Apr 3, 2024
268332b
chore(developer): fix sentry-cli path
mcdurdin Apr 3, 2024
aae2588
chore(linux): Build packages for next Ubuntu version separately
ermshiperete Apr 2, 2024
005b279
chore(web): addresses PR review concerns
jahorton Apr 3, 2024
e07e5ff
chore(linux): Fix typo
ermshiperete Apr 3, 2024
bab1b72
Merge pull request #11153 from keymanapp/chore/linux/cherry-pick/1114…
ermshiperete Apr 3, 2024
f5bb539
chore(web): final PR suggestion
jahorton Apr 3, 2024
183a17c
Merge pull request #11151 from keymanapp/fix/developer/11091-upgrade-…
mcdurdin Apr 3, 2024
a067401
Merge pull request #11134 from keymanapp/fix/android/osk-height
darcywong00 Apr 3, 2024
333d465
Merge pull request #11129 from keymanapp/change/web/no-nearest-key-re…
jahorton Apr 3, 2024
31ad98d
auto: increment beta version to 17.0.302
keyman-server Apr 3, 2024
90d9c1a
Merge pull request #11159 from keymanapp/auto/version-beta-17.0.302
keyman-server Apr 3, 2024
636d21f
fix(windows): decode packge id at assignment encode uri creation
rc-swag Apr 3, 2024
653cb3b
fix(windows): ditch the Indy library use own URLDecode
rc-swag Apr 4, 2024
71359a7
Merge pull request #11141 from keymanapp/fix/mac-11087-slow-typing
sgschantz Apr 4, 2024
db9e807
fix(common/models): suggestion stability after multiple whitespaces
jahorton Apr 4, 2024
e85074a
fix(windows): add utilhttp to developer projects
rc-swag Apr 4, 2024
2c4d8e3
fix(core): skip leading trail surrogate char in km_core_state_context…
srl295 Apr 4, 2024
4141bfe
auto: increment beta version to 17.0.303
keyman-server Apr 4, 2024
4dd3672
Merge pull request #11171 from keymanapp/auto/version-beta-17.0.303
keyman-server Apr 4, 2024
fdc1db4
fix(windows): IDE introduce project file deployment path
rc-swag Apr 4, 2024
02812af
fix(common): specify title explicitly when opening PR with hub
mcdurdin Apr 5, 2024
d711856
Merge pull request #11152 from keymanapp/fix/windows/11005/decode-uri…
rc-swag Apr 5, 2024
3a3d2a8
change(web): merges split async method in gesture engine
jahorton Apr 2, 2024
eeac2b5
Merge pull request #11164 from keymanapp/fix/common/models/suggestion…
jahorton Apr 5, 2024
062537b
refactor(web): OSK spacebar-label updates now managed by layer object
jahorton Apr 5, 2024
9a016bb
refactor(web): better centralizes layer-group functionality and prope…
jahorton Apr 5, 2024
a6093c2
feat(web): VisualKeyboard layout-reflow optimization
jahorton Apr 5, 2024
f2dba20
fix(web): fixed width vs fixed height references
jahorton Apr 5, 2024
8a21fbc
change(web): layer-specific refresh tweak
jahorton Apr 5, 2024
f21afb1
docs(web): comment on recent code
jahorton Apr 2, 2024
04df7f7
feat(web): high-level layout op batching
jahorton Apr 3, 2024
1a59f9b
fix(web): handling of nested layout deferrals
jahorton Apr 3, 2024
8cf0da4
change(web): prevents one small reflow during kbd swap
jahorton Apr 4, 2024
c595303
change(web): eliminates early redundant context reset
jahorton Apr 4, 2024
bf130e3
fix(web): nearest-key row lookup when touch moves out-of-bounds
jahorton Apr 5, 2024
e43aa3c
fix(core): skip leading trail surrogate char
srl295 Apr 5, 2024
11482c8
Merge branch 'beta' into chore/core/11112-lone-surrogate
srl295 Apr 5, 2024
edd5b54
auto: increment beta version to 17.0.304
keyman-server Apr 5, 2024
97552f7
Merge pull request #11184 from keymanapp/auto/version-beta-17.0.304
keyman-server Apr 5, 2024
bee64b6
fix(web): key-height calc should be based on btn, not square
jahorton Apr 8, 2024
5ca3794
chore(web): better ref for spacebar key btn
jahorton Apr 8, 2024
c9d7a9e
chore(web): Merge branch 'feat/web/vkbd-layout-optimization' into cha…
jahorton Apr 8, 2024
328900c
fix(web): refixes bad return case
jahorton Apr 8, 2024
8261f7f
chore(web): Merge branch 'feat/web/vkbd-layout-optimization' into cha…
jahorton Apr 8, 2024
b6bd677
fix(android): atomically updates selection with text
jahorton Apr 8, 2024
37b8c1c
docs(android): cleans in-dev comment
jahorton Apr 8, 2024
75bde80
fix(web): quick multitap-modipress use
jahorton Apr 8, 2024
522d929
fix(android): restores API method, deprecates + docs old form
jahorton Apr 8, 2024
80a59c0
Merge branch 'beta' into chore/core/11112-lone-surrogate
srl295 Apr 8, 2024
9a1ef32
chore(android): removal of new but unused var
jahorton Apr 9, 2024
639963d
Merge pull request #11188 from keymanapp/fix/android/text-selection-sync
jahorton Apr 9, 2024
c48dcba
Merge pull request #11178 from keymanapp/fix/web/nearest-key-row-lookup
jahorton Apr 9, 2024
a0b7ede
auto: increment beta version to 17.0.305
keyman-server Apr 9, 2024
e1dd067
Merge pull request #11197 from keymanapp/auto/version-beta-17.0.305
keyman-server Apr 9, 2024
12d91cd
chore(web): Merge branch 'beta' into fix/web/quick-multitap-modipress…
jahorton Apr 10, 2024
875413d
chore(oem/fv): Add fv_sguuxs
darcywong00 Apr 10, 2024
1700642
chore(oem/fv): Update keyboard versions
darcywong00 Apr 10, 2024
82e7ddf
docs(ios): adds new section about the banner (#10630)
Apr 10, 2024
b1efaaa
docs(ios): removes old Show Banner toggle section
Apr 10, 2024
16a11b7
docs(ios): general help-image updates
Apr 10, 2024
542f95b
docs(ios): adds animated down-flick gif for gesture help
Apr 10, 2024
7887add
docs(ios): shrinks overly-large images
Apr 10, 2024
b6d9edc
Merge pull request #11169 from keymanapp/chore/core/11112-lone-surrogate
srl295 Apr 10, 2024
466f46f
docs(ios): re-rescales one image
Apr 10, 2024
966d894
Merge pull request #11142 from keymanapp/change/web/gesture-event-que…
jahorton Apr 10, 2024
d075c8f
Merge pull request #11189 from keymanapp/fix/web/quick-multitap-modip…
jahorton Apr 10, 2024
5a55ee1
fix(web): phone key-tip font scaling
jahorton Apr 10, 2024
50f30b3
Merge pull request #11175 from keymanapp/refactor/web/osk-spacebar-la…
jahorton Apr 10, 2024
e7d7e1c
chore(web): Merge branch 'beta' into refactor/web/layer-group-encapsu…
jahorton Apr 10, 2024
573ffd8
chore(web): Merge branch 'refactor/web/layer-group-encapsulation' int…
jahorton Apr 10, 2024
0900f58
auto: increment beta version to 17.0.306
keyman-server Apr 10, 2024
e759f8a
Merge pull request #11205 from keymanapp/auto/version-beta-17.0.306
keyman-server Apr 10, 2024
e06dbab
chore(ios): fixes broken link
jahorton Apr 11, 2024
1d38100
Merge pull request #11200 from keymanapp/docs/ios/banner-help-update
jahorton Apr 11, 2024
8d7f22c
Merge pull request #11198 from keymanapp/chore/oem/fv-sguux
darcywong00 Apr 11, 2024
058d3de
auto: increment beta version to 17.0.307
keyman-server Apr 11, 2024
a93ad92
Merge pull request #11213 from keymanapp/auto/version-beta-17.0.307
keyman-server Apr 11, 2024
49ce3eb
Merge pull request #11173 from keymanapp/fix/common/11125-specify-pr-…
mcdurdin Apr 11, 2024
50b261f
Merge pull request #11176 from keymanapp/refactor/web/layer-group-enc…
jahorton Apr 12, 2024
68f6a24
Merge pull request #11177 from keymanapp/feat/web/vkbd-layout-optimiz…
jahorton Apr 12, 2024
ab0d225
Merge pull request #11140 from keymanapp/change/web/anti-layout-reflo…
jahorton Apr 12, 2024
d6ee7f5
Merge remote-tracking branch 'origin/master' into chore/merge-beta-to…
darcywong00 Apr 12, 2024
97e90c9
Apply suggestions from code review
darcywong00 Apr 12, 2024
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
10 changes: 10 additions & 0 deletions .github/workflows/deb-packaging.yml
Original file line number Diff line number Diff line change
Expand Up @@ -151,6 +151,16 @@ jobs:
ref: '${{ github.event.client_payload.buildSha }}'
sparse-checkout: '.github/actions/'

binary_packages_unreleased:
name: Build binary packages for next Ubuntu version
needs: sourcepackage
strategy:
fail-fast: true
matrix:
dist: [noble]

runs-on: ubuntu-latest
steps:
- name: Build
uses: ./.github/actions/build-binary-packages
with:
Expand Down
75 changes: 75 additions & 0 deletions HISTORY.md
Original file line number Diff line number Diff line change
Expand Up @@ -75,6 +75,81 @@
* chore(common): move to 18.0 alpha (#10713)
* chore: move to 18.0 alpha

## 17.0.306 beta 2024-04-11

* docs(ios): updates iOS app help for 17.0 banner changes (#11200)
* chore(oem/fv): Add fv sguuxs and update keyboard versions (#11198)

## 17.0.305 beta 2024-04-10

* (#11169)
darcywong00 marked this conversation as resolved.
Show resolved Hide resolved
* change(web): merges split async method in gesture engine (#11142)
* fix(web): blocks nextLayer for keys quickly typed when multitapping to new layer when final tap is held (#11189)
* refactor(web): OSK spacebar-label updates now managed by layer object (#11175)

## 17.0.304 beta 2024-04-09

* fix(android): atomically updates selection with text (#11188)
* (#11178)
darcywong00 marked this conversation as resolved.
Show resolved Hide resolved

## 17.0.303 beta 2024-04-05

* fix(windows): decode uri for Package ID and filename (#11152)
* fix(common/models): suggestion stability after multiple whitespaces (#11164)

## 17.0.302 beta 2024-04-04

* fix(mac): load only 80 characters from context when processing keystrokes (#11141)

## 17.0.301 beta 2024-04-03

* feat(core): support modifiers=other (#11118)
* chore(core): dx better err message on embedded test vkeys (#11119)
* fix(web): key preview stickiness 🪠 (#10778)
* fix(web): early gesture-match abort when unable to extend existing gestures 🪠 (#10836)
* fix(web): infinite model-match replacement looping 🪠 (#10838)
* fix(web): proper gesture-match sequencing 🪠 (#10840)
* change(web): input-event sequentialization 🪠 (#10843)
* fix(web): proper linkage of sources to events 🪠 (#10960)
* fix(developer): handle buffer boundaries in four cases (#11137)
* chore(linux): Build packages for next Ubuntu version separately (#11153)
* fix(common): upgrade sentry-cli to 2.31.0 (#11151)
* fix(android/app): Track previous device orientation for SystemKeyboard (#11134)
* (#11129)
darcywong00 marked this conversation as resolved.
Show resolved Hide resolved

## 17.0.300 beta 2024-04-02

* change(web): keyboard swaps keep original keyboards active until fully ready (#11108)
* fix(android/engine): Swap selection range if reversed (#11127)
* test(developer): keyboard info compiler unit tests (#11000)

## 17.0.299 beta 2024-04-01

* fix(ios): address crash by reading full code point rather than code unit when trimming initial directional-mark (#11113)
* fix(mac): delete correct number of characters from current context when processing BMP or SMP deletes (#11086)
* feat(developer): disallow stray dollarsign in from pattern (#11117)

## 17.0.298 beta 2024-03-29

* chore(linux): Update debian changelog (#11096)
* fix(web): prevent layer switch key from erasing selection (#11032)
* fix(developer): prevent error when scrolling touch layout editor with no selected key (#11109)
* fix(common): make `isEmptyTransform` return true if passed a nullish transform (#11110)

## 17.0.297 beta 2024-03-28

* fix(common): properly handle illegal UnicodeSets to prevent crash in kmc-ldml compiler (#11065)
* fix(core,developer): variable/marker substitution in sets and strings (#11059)
* fix(developer): in ldml compiler, generate compiler error if `from=` regex matches empty string (#11070)
* fix(core): calculate offset correctly when replacing marker in transform (fixes crash) (#11071)
* feat(developer): support comma in modifiers (#11075)
* fix(core): actions_normalize() length and dead store fix (#11100)
* chore(core): optimize ldml_event_state::emit_difference() when no diff (#11094)
* fix(ios): bad initial in-app layout, delayed banner, deprecated banner toggle (#10929)
* feat(developer/compilers): better unit test for suggestion accessibility (#11085)
* fix(core): fix pointer math in actions_normalize() (#11101)


## 17.0.296 beta 2024-03-27

* fix(developer): in model compiler, give correct key to shorter prefix words when a longer, higher-frequency word is also present (#11074)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -42,6 +42,7 @@ public class SystemKeyboard extends InputMethodService implements OnKeyboardEven
private static View inputView = null;
private static ExtractedText exText = null;
private KMHardwareKeyboardInterpreter interpreter = null;
private int lastOrientation = Configuration.ORIENTATION_UNDEFINED;

private static final String TAG = "SystemKeyboard";

Expand Down Expand Up @@ -129,7 +130,7 @@ public View onCreateInputView() {
@Override
public void onUpdateSelection(int oldSelStart, int oldSelEnd, int newSelStart, int newSelEnd, int candidatesStart, int candidatesEnd) {
super.onUpdateSelection(oldSelStart, oldSelEnd, newSelStart, newSelEnd, candidatesStart, candidatesEnd);
KMManager.updateSelectionRange(KMManager.KeyboardType.KEYBOARD_TYPE_SYSTEM, newSelStart, newSelEnd);
KMManager.updateSelectionRange(KMManager.KeyboardType.KEYBOARD_TYPE_SYSTEM);
}

/**
Expand Down Expand Up @@ -169,9 +170,7 @@ public void onStartInput(EditorInfo attribute, boolean restarting) {
ExtractedText icText = ic.getExtractedText(new ExtractedTextRequest(), 0);
if (icText != null) {
boolean didUpdateText = KMManager.updateText(KeyboardType.KEYBOARD_TYPE_SYSTEM, icText.text.toString());
int selStart = icText.startOffset + icText.selectionStart;
int selEnd = icText.startOffset + icText.selectionEnd;
boolean didUpdateSelection = KMManager.updateSelectionRange(KeyboardType.KEYBOARD_TYPE_SYSTEM, selStart, selEnd);
boolean didUpdateSelection = KMManager.updateSelectionRange(KeyboardType.KEYBOARD_TYPE_SYSTEM);
if (!didUpdateText || !didUpdateSelection)
exText = icText;
}
Expand All @@ -197,7 +196,10 @@ public void onUpdateExtractingVisibility(EditorInfo ei) {
@Override
public void onConfigurationChanged(Configuration newConfig) {
super.onConfigurationChanged(newConfig);
KMManager.onConfigurationChanged(newConfig);
if (newConfig.orientation != lastOrientation) {
lastOrientation = newConfig.orientation;
KMManager.onConfigurationChanged(newConfig);
}
}

@Override
Expand All @@ -220,8 +222,9 @@ public void onComputeInsets(InputMethodService.Insets outInsets) {
wm.getDefaultDisplay().getSize(size);

int inputViewHeight = 0;
if (inputView != null)
if (inputView != null) {
inputViewHeight = inputView.getHeight();
}

int bannerHeight = KMManager.getBannerHeight(this);
int kbHeight = KMManager.getKeyboardHeight(this);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -163,7 +163,7 @@ protected boolean updateText(String text) {
return result;
}

protected boolean updateSelectionRange(int selStart, int selEnd) {
protected boolean updateSelectionRange() {
boolean result = false;
InputConnection ic = KMManager.getInputConnection(this.keyboardType);
if (ic != null) {
Expand All @@ -175,6 +175,16 @@ protected boolean updateSelectionRange(int selStart, int selEnd) {
String rawText = icText.text.toString();
updateText(rawText.toString());

int selStart = icText.selectionStart;
int selEnd = icText.selectionEnd;

int selMin = selStart, selMax = selEnd;
if (selStart > selEnd) {
// Selection is reversed so "swap"
selMin = selEnd;
selMax = selStart;
}

/*
The values of selStart & selEnd provided by the system are in code units,
not code-points. We need to account for surrogate pairs here.
Expand All @@ -193,8 +203,8 @@ protected boolean updateSelectionRange(int selStart, int selEnd) {

selStart -= pairsAtStart;
selEnd -= (pairsAtStart + pairsSelected);
this.loadJavascript(KMString.format("updateKMSelectionRange(%d,%d)", selStart, selEnd));
}
this.loadJavascript(KMString.format("updateKMSelectionRange(%d,%d)", selStart, selEnd));
result = true;

return result;
Expand Down
27 changes: 25 additions & 2 deletions android/KMEA/app/src/main/java/com/keyman/engine/KMManager.java
Original file line number Diff line number Diff line change
Expand Up @@ -2137,17 +2137,40 @@ public static boolean updateText(KeyboardType kbType, String text) {
return result;
}

/**
* Updates the active range for selected text.
* @deprecated
* This method no longer needs the `selStart` and `selEnd` parameters.
* <p>Use {@link KMManager#updateSelectionRange(KeyboardType)} instead.</p>
*
* @param kbType A value indicating if this request is for the in-app keyboard or the system keyboard
* @param selStart (deprecated) the start index for the range
* @param selEnd (deprecated) the end index for the selected range
* @return
*/
@Deprecated
public static boolean updateSelectionRange(KeyboardType kbType, int selStart, int selEnd) {
return updateSelectionRange(kbType);
}

/**
* Performs a synchronization check for the active range for selected text,
* ensuring it matches the text-editor's current state.
* @param kbType A value indicating if this request is for the in-app or system keyboard.
* @return
*/
public static boolean updateSelectionRange(KeyboardType kbType) {
boolean result = false;

if (kbType == KeyboardType.KEYBOARD_TYPE_INAPP) {
if (isKeyboardLoaded(KeyboardType.KEYBOARD_TYPE_INAPP) && !InAppKeyboard.shouldIgnoreSelectionChange()) {
result = InAppKeyboard.updateSelectionRange(selStart, selEnd);
result = InAppKeyboard.updateSelectionRange();
}

InAppKeyboard.setShouldIgnoreSelectionChange(false);
} else if (kbType == KeyboardType.KEYBOARD_TYPE_SYSTEM) {
if (isKeyboardLoaded(KeyboardType.KEYBOARD_TYPE_SYSTEM) && !SystemKeyboard.shouldIgnoreSelectionChange()) {
result = SystemKeyboard.updateSelectionRange(selStart, selEnd);
result = SystemKeyboard.updateSelectionRange();
}

SystemKeyboard.setShouldIgnoreSelectionChange(false);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -63,10 +63,8 @@ public KMTextView(Context context, AttributeSet attrs, int defStyle) {
*/
public static void updateTextContext() {
KMTextView textView = (KMTextView) activeView;
int selStart = textView.getSelectionStart();
int selEnd = textView.getSelectionEnd();
KMManager.updateText(KeyboardType.KEYBOARD_TYPE_INAPP, textView.getText().toString());
if (KMManager.updateSelectionRange(KeyboardType.KEYBOARD_TYPE_INAPP, selStart, selEnd)) {
if (KMManager.updateSelectionRange(KeyboardType.KEYBOARD_TYPE_INAPP)) {
KMManager.resetContext(KeyboardType.KEYBOARD_TYPE_INAPP);
}
}
Expand Down Expand Up @@ -167,7 +165,7 @@ protected void onTextChanged(CharSequence text, int start, int lengthBefore, int
protected void onSelectionChanged(int selStart, int selEnd) {
super.onSelectionChanged(selStart, selEnd);
if (activeView != null && activeView.equals(this)) {
if (KMManager.updateSelectionRange(KMManager.KeyboardType.KEYBOARD_TYPE_INAPP, selStart, selEnd)) {
if (KMManager.updateSelectionRange(KMManager.KeyboardType.KEYBOARD_TYPE_INAPP)) {
KMManager.resetContext(KeyboardType.KEYBOARD_TYPE_INAPP);
}
}
Expand Down
3 changes: 3 additions & 0 deletions common/include/kmx_file.h
Original file line number Diff line number Diff line change
Expand Up @@ -302,6 +302,9 @@ namespace kmx {

#define K_MODIFIERFLAG 0x007F
#define K_NOTMODIFIERFLAG 0xFF00 // I4548
// Note: OTHER_MODIFIER = 0x10000, used by KMX+ for the
// other modifier flag in layers, > 16 bit so not available here.
// See keys_mod_other in keyman_core_ldml.ts

struct COMP_STORE {
KMX_DWORD_unaligned dwSystemID;
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,98 @@
import { timedPromise } from "@keymanapp/web-utils";
import { reportError } from "../reportError.js";

export type QueueClosure = () => (Promise<any> | void);

/**
This class is modeled somewhat after Swift's `DispatchQueue` class, but with
the twist that each closure may return a `Promise` (in Swift: a `Future`) to
lock out further closure processing until the `Promise` resolves.
*/
export class AsyncClosureDispatchQueue {
private queue: QueueClosure[];
private waitLock: Promise<any>;
private defaultWaitFactory: () => Promise<any>;

/**
*
* @param defaultWaitFactory A factory returning Promises to use for default
* delays between tasks. If not specified, Promises corresponding to
* setTimeout(0) will be used, allowing the microqueue task to flush between
* tasks.
*/
constructor(defaultWaitFactory?: () => Promise<any>) {
// We only need to trigger events if the queue has no prior entries and there isn't an
// active wait-lock; for the latter, we'll auto-trigger the next function when it unlocks.
this.queue = [];

this.defaultWaitFactory = defaultWaitFactory || (() => { return timedPromise(0) });
}

get defaultWait() {
return this.defaultWaitFactory();
}

get ready() {
return this.queue.length == 0 && !this.waitLock;
}

private async triggerNextClosure() {
if(this.queue.length == 0) {
return;
}

const functor = this.queue.shift();

// A stand-in so that `ready` doesn't report true while the closure runs.
this.waitLock = Promise.resolve();

/*
It is imperative that any errors triggered by the functor do not prevent this method from setting
the wait lock that will trigger the following event (if it exists). Failure to do so will
result in all further queued closures never getting the opportunity to run!
*/
let result: undefined | Promise<any>;
try {
// Is either undefined (return type: void) or is a Promise.
result = functor() as undefined | Promise<any>;
/* c8 ignore start */
} catch (err) {
reportError('Error from queued closure', err);
}
/* c8 ignore end */

/*
Replace the stand-in with the _true_ post-closure wait.

If the closure returns a Promise, the implication is that the further processing of queued
functions should be blocked until that Promise is fulfilled.

If not, we just add a default delay.
*/
result = result ?? this.defaultWaitFactory();
this.waitLock = result;

try {
await result;
} catch(err) {
reportError('Async error from queued closure', err);
}

this.waitLock = null;
// if queue is length zero, auto-returns.
this.triggerNextClosure();
}

runAsync(closure: QueueClosure) {
// Check before putting the closure on the internal queue; the check is based in part
// upon the existing queue length.
const isReady = this.ready;

this.queue.push(closure);

// If `!isReady`, the next closure will automatically be triggered when possible.
if(isReady) {
this.triggerNextClosure();
}
}
}
Loading
Loading