From e5c37f7afca64ae088ff5d2580e05228e578f71b Mon Sep 17 00:00:00 2001 From: jahorton Date: Thu, 1 Oct 2020 12:32:10 +0700 Subject: [PATCH 01/31] refactor(common/models): centralizes suggestion & keep inits --- common/models/templates/src/common.ts | 11 +++ common/models/templates/src/trie-model.ts | 15 ++-- .../headless/worker-custom-punctuation.js | 11 +-- .../worker/model-compositor.ts | 84 ++++++++++--------- 4 files changed, 62 insertions(+), 59 deletions(-) diff --git a/common/models/templates/src/common.ts b/common/models/templates/src/common.ts index 6b9fb2bdea..d6e909c8f3 100644 --- a/common/models/templates/src/common.ts +++ b/common/models/templates/src/common.ts @@ -60,4 +60,15 @@ namespace models { export function isSentinel(char: string): boolean { return char == models.SENTINEL_CODE_UNIT; } + + export function transformToSuggestion(transform: Transform): Suggestion; + export function transformToSuggestion(transform: Transform, p: number): Suggestion & {p: number}; + export function transformToSuggestion(transform: Transform, p?: number): Suggestion & {p?: number} { + return { + transform: transform, + transformId: transform.id, + displayAs: transform.insert, + p: p + }; + } } diff --git a/common/models/templates/src/trie-model.ts b/common/models/templates/src/trie-model.ts index 3c0c3039ea..0146155000 100644 --- a/common/models/templates/src/trie-model.ts +++ b/common/models/templates/src/trie-model.ts @@ -124,18 +124,13 @@ let prefix = this.getLastWord(newContext.left); // Return suggestions from the trie. - return makeDistribution(this._trie.lookup(prefix).map(({text, p}) => ({ - transform: { - // Insert the suggestion from the Trie, verbatim + return makeDistribution(this._trie.lookup(prefix).map(({text, p}) => + models.transformToSuggestion({ insert: text, - // Delete whatever the prefix that the user wrote. - // Note: a separate capitalization/orthography engine can take this - // result and transform it as needed. - deleteLeft: leftDelOffset + prefix.kmwLength(), + deleteLeft: leftDelOffset + prefix.kmwLength() }, - displayAs: text, - p: p - }))); + p + ))); /* Helper */ diff --git a/common/predictive-text/unit_tests/headless/worker-custom-punctuation.js b/common/predictive-text/unit_tests/headless/worker-custom-punctuation.js index 3407ace41f..b2fbc3b2db 100644 --- a/common/predictive-text/unit_tests/headless/worker-custom-punctuation.js +++ b/common/predictive-text/unit_tests/headless/worker-custom-punctuation.js @@ -8,16 +8,7 @@ var ModelCompositor = require('../../build/intermediate').ModelCompositor; describe('Custom Punctuation', function () { it('appears in the keep suggestion', function () { - let dummySuggestions = [ - { - transform: { - insert: 'Hrllo', - deleteLeft: 0, - }, - tag: 'keep', - displayAs: 'Hrllo', - }, - { + let dummySuggestions = [{ transform: { insert: 'Hello', deleteLeft: 0, diff --git a/common/predictive-text/worker/model-compositor.ts b/common/predictive-text/worker/model-compositor.ts index f8e1091bb3..05b20bb745 100644 --- a/common/predictive-text/worker/model-compositor.ts +++ b/common/predictive-text/worker/model-compositor.ts @@ -40,7 +40,6 @@ class ModelCompositor { } private predictFromCorrections(corrections: ProbabilityMass[], context: Context): Distribution { - let punctuation = this.punctuation; let returnedPredictions: Distribution = []; for(let correction of corrections) { @@ -67,12 +66,6 @@ class ModelCompositor { if(preserveWhitespace) { models.prependTransform(pair.sample.transform, transform); } - - // The model is trying to add a word; thus, add some custom formatting - // to that word. - if (pair.sample.transform.insert.length > 0) { - pair.sample.transform.insert += punctuation.insertAfterWord; - } let prediction = {sample: pair.sample, p: pair.p * inputProb}; return prediction; @@ -217,13 +210,18 @@ class ModelCompositor { let displayText = prediction.sample.displayAs; if(displayText == keepOptionText || (lexicalModel.toKey && displayText == lexicalModel.toKey(keepOptionText)) ) { - keepOption = prediction.sample; - // Ensure we keep any original casing, etc that may have been stripped. - keepOption.transform.insert = keepOptionText + punctuation.insertAfterWord; - keepOption.displayAs = keepOptionText; - // Specifying 'keep' helps uses of the LMLayer find it quickly - // if/when desired. - keepOption.tag = 'keep'; + // Preserve the original, pre-keyed version of the text. + let baseTransform = prediction.sample.transform; + + let keepTransform = { + insert: keepOptionText, + deleteLeft: baseTransform.deleteLeft, + deleteRight: baseTransform.deleteRight, + id: baseTransform.id + } + + keepOption = models.transformToSuggestion(keepTransform, prediction.p); + keepOption = this.toAnnotatedKeepSuggestion(keepOption, true); } else { let existingSuggestion = suggestionDistribMap[displayText]; if(existingSuggestion) { @@ -236,32 +234,11 @@ class ModelCompositor { // Generate a default 'keep' option if one was not otherwise produced. if(!keepOption && keepOptionText != '') { - keepOption = { - displayAs: keepOptionText, - transformId: inputTransform.id, - // Replicate the original transform, modified for appropriate language insertion syntax. - transform: { - insert: inputTransform.insert + punctuation.insertAfterWord, - deleteLeft: inputTransform.deleteLeft, - deleteRight: inputTransform.deleteRight, - id: inputTransform.id - }, - tag: 'keep' - }; - } + let keepTransform = models.transformToSuggestion(inputTransform, 1); // 1 is a filler value; goes unused b/c is for a 'keep'. + // This is the one case where the transform doesn't insert the full word; we need to override the displayAs param. + keepTransform.displayAs = keepOptionText; - // Add the surrounding quotes to the "keep" option's display string: - if (keepOption) { - let { open, close } = punctuation.quotesForKeepSuggestion; - - // Should we also ensure that we're using the default quote marks first? - // Or is it reasonable to say that the "left" mark is always the one - // called "open"? - if(!punctuation.isRTL) { - keepOption.displayAs = open + keepOption.displayAs + close; - } else { - keepOption.displayAs = close + keepOption.displayAs + open; - } + keepOption = this.toAnnotatedKeepSuggestion(keepTransform); } // Section 3: Finalize suggestions, truncate list to the N (MAX_SUGGESTIONS) most optimal, return. @@ -295,9 +272,38 @@ class ModelCompositor { suggestions = [ keepOption ].concat(suggestions); } + // Apply 'after word' punctuation. We delay until now so that utility functions relying on the + // unmodified Transform may execute properly. + suggestions.forEach(function(suggestion) { + if (suggestion.transform.insert.length > 0) { + suggestion.transform.insert += punctuation.insertAfterWord; + } + }); + return suggestions; } + private toAnnotatedKeepSuggestion(suggestion: Suggestion & {p?: number}, noQuotes: boolean = false): Suggestion & {p?: number} { + let { open, close } = this.punctuation.quotesForKeepSuggestion; + + if(noQuotes) { + open = ''; + close = ''; + } else if(this.punctuation.isRTL) { + let temp = close; + close = open; + open = temp; + } + + return { + transform: suggestion.transform, + transformId: suggestion.transformId, + displayAs: open + suggestion.displayAs + close, + tag: 'keep', + p: suggestion.p + } + } + /** * Returns the punctuation used for this model, filling out unspecified fields */ From b1c44877f6d6fc75ff46e7ac7c5d000aa767b92d Mon Sep 17 00:00:00 2001 From: jahorton Date: Thu, 1 Oct 2020 12:34:38 +0700 Subject: [PATCH 02/31] docs(common/models): restores comment --- common/models/templates/src/trie-model.ts | 3 +++ 1 file changed, 3 insertions(+) diff --git a/common/models/templates/src/trie-model.ts b/common/models/templates/src/trie-model.ts index 0146155000..3476081a51 100644 --- a/common/models/templates/src/trie-model.ts +++ b/common/models/templates/src/trie-model.ts @@ -127,7 +127,10 @@ return makeDistribution(this._trie.lookup(prefix).map(({text, p}) => models.transformToSuggestion({ insert: text, + // Delete whatever the prefix that the user wrote. deleteLeft: leftDelOffset + prefix.kmwLength() + // Note: a separate capitalization/orthography engine can take this + // result and transform it as needed. }, p ))); From a8ebdaee1bfd36b592d1a63c85c780fccc630c53 Mon Sep 17 00:00:00 2001 From: jahorton Date: Thu, 1 Oct 2020 12:41:55 +0700 Subject: [PATCH 03/31] docs(common/models): adds doc for important assumption --- common/models/templates/src/common.ts | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/common/models/templates/src/common.ts b/common/models/templates/src/common.ts index d6e909c8f3..fe3b285c7c 100644 --- a/common/models/templates/src/common.ts +++ b/common/models/templates/src/common.ts @@ -61,6 +61,13 @@ namespace models { return char == models.SENTINEL_CODE_UNIT; } + /** + * Builds a Suggestion based on a Transform corresponding to a predictive-text op. + * + * Assumes that the Transform's `insert` property represents a completed word, + * as models generally delete the whole prefix, replacing it with the full lexical entry. + * @param transform + */ export function transformToSuggestion(transform: Transform): Suggestion; export function transformToSuggestion(transform: Transform, p: number): Suggestion & {p: number}; export function transformToSuggestion(transform: Transform, p?: number): Suggestion & {p?: number} { From cbf56266d522e07b7fd64079ee924fa35ae69a47 Mon Sep 17 00:00:00 2001 From: jahorton Date: Fri, 2 Oct 2020 10:17:10 +0700 Subject: [PATCH 04/31] change(common/core/web): nomenclature shift - accept > apply --- .../input-processor/src/text/prediction/languageProcessor.ts | 2 +- web/source/osk/banner.ts | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/common/core/web/input-processor/src/text/prediction/languageProcessor.ts b/common/core/web/input-processor/src/text/prediction/languageProcessor.ts index 180c05e7f4..e3f781f903 100644 --- a/common/core/web/input-processor/src/text/prediction/languageProcessor.ts +++ b/common/core/web/input-processor/src/text/prediction/languageProcessor.ts @@ -186,7 +186,7 @@ namespace com.keyman.text.prediction { return this.predict_internal(transcription); } - public acceptSuggestion(suggestion: Suggestion, outputTarget: OutputTarget): Promise { + public applySuggestion(suggestion: Suggestion, outputTarget: OutputTarget): Promise { if(!outputTarget) { throw "Accepting suggestions requires a destination OutputTarget instance." } diff --git a/web/source/osk/banner.ts b/web/source/osk/banner.ts index 36e2a37d2a..a1e9252450 100644 --- a/web/source/osk/banner.ts +++ b/web/source/osk/banner.ts @@ -266,7 +266,7 @@ namespace com.keyman.osk { } // Apply the Suggestion! - return keyman.core.languageProcessor.acceptSuggestion(this.suggestion, target); + return keyman.core.languageProcessor.applySuggestion(this.suggestion, target); } } From 53a197fba592baa566b0077f3b654fb396b53ecd Mon Sep 17 00:00:00 2001 From: Marc Durdin Date: Mon, 5 Oct 2020 14:11:34 +1100 Subject: [PATCH 05/31] chore(windows): Move to Windows SDK 10.0.17763.0 This removes the requirement for the Windows 8.1 SDK. --- windows/src/Defines.mak | 2 +- windows/src/README.md | 2 +- windows/src/buildtools/getfilelocks/getfilelocks.vcxproj | 2 +- windows/src/developer/kmcmpdll/kcframe.vcxproj | 2 +- windows/src/developer/kmcmpdll/kmcmpdll.vcxproj | 2 +- windows/src/developer/kmdecomp/kmdecomp.vcxproj | 2 +- windows/src/developer/samples/imsample/IMSample.vcxproj | 1 + windows/src/engine/keyman32/Keyman32.vcxproj | 2 +- windows/src/engine/keyman64/keyman64.vcxproj | 1 + windows/src/engine/keymanx64/keymanx64.vcxproj | 1 + windows/src/engine/kmtip/kmtip.vcxproj | 1 + windows/src/engine/mcompile/mcompile.vcxproj | 1 + windows/src/ext/tds2dbg/tds2dbg.vcxproj | 1 + windows/src/support/enumtsfcpp/enumtsfcpp/enumtsfcpp.vcxproj | 1 + .../importkeyboard/importkeyboard/importkeyboard.vcxproj | 1 + .../src/test/unit-tests/shared-data/cpp/cppshareddata.vcxproj | 2 +- 16 files changed, 16 insertions(+), 8 deletions(-) diff --git a/windows/src/Defines.mak b/windows/src/Defines.mak index 0c7f6e6b69..0c1aaceb8d 100644 --- a/windows/src/Defines.mak +++ b/windows/src/Defines.mak @@ -162,7 +162,7 @@ NMAKE=nmake.exe CL=cl.exe MSBUILD=msbuild.exe # /maxcpucount see https://devblogs.microsoft.com/cppblog/precompiled-header-pch-issues-and-recommendations/ -MT="C:\Program Files (x86)\Windows Kits\8.1\bin\x86\mt.exe" +MT=mt.exe VCBUILD=error !IFDEF DEBUG diff --git a/windows/src/README.md b/windows/src/README.md index 4e639c5168..fad08256ae 100644 --- a/windows/src/README.md +++ b/windows/src/README.md @@ -91,7 +91,7 @@ In Visual Studio 2017, you need to have the following installed: #### Individual components * Windows Universal CRT SDK -* Windows 8.1 SDK +* Windows 10.0.17763.0 SDK Configure Visual Studio to use two-space tab stops: 1. Open the options dialog: Tools > Options. diff --git a/windows/src/buildtools/getfilelocks/getfilelocks.vcxproj b/windows/src/buildtools/getfilelocks/getfilelocks.vcxproj index b4672daaab..7743a661a5 100644 --- a/windows/src/buildtools/getfilelocks/getfilelocks.vcxproj +++ b/windows/src/buildtools/getfilelocks/getfilelocks.vcxproj @@ -14,7 +14,7 @@ {D737021A-16A7-9AED-C550-640E9E0582B2} - 8.1 + 10.0.17763.0 diff --git a/windows/src/developer/kmcmpdll/kcframe.vcxproj b/windows/src/developer/kmcmpdll/kcframe.vcxproj index cf865a0ec4..eb02ce1ad5 100644 --- a/windows/src/developer/kmcmpdll/kcframe.vcxproj +++ b/windows/src/developer/kmcmpdll/kcframe.vcxproj @@ -21,7 +21,7 @@ {E92CC897-8228-4728-8110-028088D7A99C} kcframe - 8.1 + 10.0.17763.0 diff --git a/windows/src/developer/kmcmpdll/kmcmpdll.vcxproj b/windows/src/developer/kmcmpdll/kmcmpdll.vcxproj index 3f443976c8..15d2197391 100644 --- a/windows/src/developer/kmcmpdll/kmcmpdll.vcxproj +++ b/windows/src/developer/kmcmpdll/kmcmpdll.vcxproj @@ -21,7 +21,7 @@ {7E26FE08-721E-424B-9DA0-4A0DCA88A86E} kmcmpdll - 8.1 + 10.0.17763.0 diff --git a/windows/src/developer/kmdecomp/kmdecomp.vcxproj b/windows/src/developer/kmdecomp/kmdecomp.vcxproj index 9b05b9f22f..c120a6d763 100644 --- a/windows/src/developer/kmdecomp/kmdecomp.vcxproj +++ b/windows/src/developer/kmdecomp/kmdecomp.vcxproj @@ -12,7 +12,7 @@ {963D608A-6689-469C-AE42-F56696DD42CC} - 8.1 + 10.0.17763.0 diff --git a/windows/src/developer/samples/imsample/IMSample.vcxproj b/windows/src/developer/samples/imsample/IMSample.vcxproj index 2860179ab1..5569efdc69 100644 --- a/windows/src/developer/samples/imsample/IMSample.vcxproj +++ b/windows/src/developer/samples/imsample/IMSample.vcxproj @@ -14,6 +14,7 @@ {0C9DB8F9-B788-8782-A97D-4F8294AA0B4E} + 10.0.17763.0 diff --git a/windows/src/engine/keyman32/Keyman32.vcxproj b/windows/src/engine/keyman32/Keyman32.vcxproj index ce7c239ebd..967710cde8 100644 --- a/windows/src/engine/keyman32/Keyman32.vcxproj +++ b/windows/src/engine/keyman32/Keyman32.vcxproj @@ -13,7 +13,7 @@ {BD5564FB-35A5-4A3C-B96A-4A6578E2B593} Keyman32 - 8.1 + 10.0.17763.0 diff --git a/windows/src/engine/keyman64/keyman64.vcxproj b/windows/src/engine/keyman64/keyman64.vcxproj index 2efd99ae81..93083616ad 100644 --- a/windows/src/engine/keyman64/keyman64.vcxproj +++ b/windows/src/engine/keyman64/keyman64.vcxproj @@ -21,6 +21,7 @@ {D1115FB2-230D-4FD8-90B9-982E49953D18} Keyman32 + 10.0.17763.0 diff --git a/windows/src/engine/keymanx64/keymanx64.vcxproj b/windows/src/engine/keymanx64/keymanx64.vcxproj index b6f588cd1a..c16b2a9fd0 100644 --- a/windows/src/engine/keymanx64/keymanx64.vcxproj +++ b/windows/src/engine/keymanx64/keymanx64.vcxproj @@ -22,6 +22,7 @@ {A34650EA-D6E8-4229-8091-6BF1443565B5} keymanx64 Win32Proj + 10.0.17763.0 diff --git a/windows/src/engine/kmtip/kmtip.vcxproj b/windows/src/engine/kmtip/kmtip.vcxproj index 4b5dd24290..1759b67a8d 100644 --- a/windows/src/engine/kmtip/kmtip.vcxproj +++ b/windows/src/engine/kmtip/kmtip.vcxproj @@ -20,6 +20,7 @@ {93391ECB-E2F1-4D23-B85E-6FDEB7ACF9B4} + 10.0.17763.0 diff --git a/windows/src/engine/mcompile/mcompile.vcxproj b/windows/src/engine/mcompile/mcompile.vcxproj index fc4d7493b7..5dab03a750 100644 --- a/windows/src/engine/mcompile/mcompile.vcxproj +++ b/windows/src/engine/mcompile/mcompile.vcxproj @@ -15,6 +15,7 @@ Win32Proj mtop mcompile + 10.0.17763.0 diff --git a/windows/src/ext/tds2dbg/tds2dbg.vcxproj b/windows/src/ext/tds2dbg/tds2dbg.vcxproj index 2b5f0931c3..8d57ae5c66 100644 --- a/windows/src/ext/tds2dbg/tds2dbg.vcxproj +++ b/windows/src/ext/tds2dbg/tds2dbg.vcxproj @@ -22,6 +22,7 @@ 15.0 {40BFECE3-7FC0-4649-A3DC-E017FF84C75B} Win32Proj + 10.0.17763.0 diff --git a/windows/src/support/enumtsfcpp/enumtsfcpp/enumtsfcpp.vcxproj b/windows/src/support/enumtsfcpp/enumtsfcpp/enumtsfcpp.vcxproj index 8c6cfd7355..49fb23a4fb 100644 --- a/windows/src/support/enumtsfcpp/enumtsfcpp/enumtsfcpp.vcxproj +++ b/windows/src/support/enumtsfcpp/enumtsfcpp/enumtsfcpp.vcxproj @@ -22,6 +22,7 @@ {8B6195B3-F6F8-45E7-9FCD-A5437180DAE1} Win32Proj enumtsfcpp + 10.0.17763.0 diff --git a/windows/src/test/mnemonic-to-positional/importkeyboard/importkeyboard/importkeyboard.vcxproj b/windows/src/test/mnemonic-to-positional/importkeyboard/importkeyboard/importkeyboard.vcxproj index b17d1eaa47..8629810beb 100644 --- a/windows/src/test/mnemonic-to-positional/importkeyboard/importkeyboard/importkeyboard.vcxproj +++ b/windows/src/test/mnemonic-to-positional/importkeyboard/importkeyboard/importkeyboard.vcxproj @@ -14,6 +14,7 @@ {A4DF65F2-7C94-4CE9-93CD-625641B056B5} Win32Proj importkeyboard + 10.0.17763.0 diff --git a/windows/src/test/unit-tests/shared-data/cpp/cppshareddata.vcxproj b/windows/src/test/unit-tests/shared-data/cpp/cppshareddata.vcxproj index b45686582c..a4aeb94758 100644 --- a/windows/src/test/unit-tests/shared-data/cpp/cppshareddata.vcxproj +++ b/windows/src/test/unit-tests/shared-data/cpp/cppshareddata.vcxproj @@ -23,7 +23,7 @@ {748219AC-3BDE-40FC-8E93-7516C4BCE81D} Win32Proj cppshareddata - 8.1 + 10.0.17763.0 From bd5cdcada9f06dedbeb7922352e4157c0e2dec41 Mon Sep 17 00:00:00 2001 From: jahorton Date: Mon, 5 Oct 2020 12:48:21 +0700 Subject: [PATCH 06/31] fix(common/models): starts fix for predictions after typed whitespace --- .../worker/correction/context-tracker.ts | 4 ++ .../worker/model-compositor.ts | 60 +++++++++++-------- 2 files changed, 39 insertions(+), 25 deletions(-) diff --git a/common/predictive-text/worker/correction/context-tracker.ts b/common/predictive-text/worker/correction/context-tracker.ts index 67cac6861b..6d9b5f8750 100644 --- a/common/predictive-text/worker/correction/context-tracker.ts +++ b/common/predictive-text/worker/correction/context-tracker.ts @@ -11,6 +11,10 @@ namespace correction { transformDistributions: Distribution[] = []; replacements: TrackedContextSuggestion; activeReplacement: number = -1; + + get isNew(): boolean { + return this.transformDistributions.length == 0; + } } export class TrackedContextState { diff --git a/common/predictive-text/worker/model-compositor.ts b/common/predictive-text/worker/model-compositor.ts index 05b20bb745..9a0ac1b45a 100644 --- a/common/predictive-text/worker/model-compositor.ts +++ b/common/predictive-text/worker/model-compositor.ts @@ -54,19 +54,6 @@ class ModelCompositor { pair.sample.transformId = transform.id; } - let preserveWhitespace: boolean = false; - if(this.isWhitespace(transform)) { - // Detect start of new word; prevent whitespace loss here. - let postContext = models.applyTransform(transform, context); - preserveWhitespace = (this.lexicalModel.wordbreak(postContext) == ''); - } - - // Prepends the original whitespace, ensuring it is preserved if - // the suggestion is accepted. - if(preserveWhitespace) { - models.prependTransform(pair.sample.transform, transform); - } - let prediction = {sample: pair.sample, p: pair.p * inputProb}; return prediction; }, this); @@ -102,25 +89,34 @@ class ModelCompositor { let predictionRoots: ProbabilityMass[] let rawPredictions: Distribution = []; - // Section 1: determining 'prediction roots'. + // Used to restore whitespaces if operations would remove them. + let prefixTransform: Transform; + // Section 1: determining 'prediction roots'. if(!this.contextTracker) { // Generates raw prediction distributions for each valid input. Can only 'correct' // against the final input. // // This is the old, 12.0-13.0 'correction' style. - predictionRoots = transformDistribution.map(function(alt) { - let transform = alt.sample; + if(allowSpace) { + // Detect start of new word; prevent whitespace loss here. + //let postContext = models.applyTransform(inputTransform, context); + predictionRoots = [{sample: inputTransform, p: 1.0}]; + prefixTransform = inputTransform; + } else { + predictionRoots = transformDistribution.map(function(alt) { + let transform = alt.sample; - // Filter out special keys unless they're expected. - if(this.isWhitespace(transform) && !allowSpace) { - return null; - } else if(this.isBackspace(transform) && !allowBksp) { - return null; - } + // Filter out special keys unless they're expected. + if(this.isWhitespace(transform) && !allowSpace) { + return null; + } else if(this.isBackspace(transform) && !allowBksp) { + return null; + } - return alt; - }, this); + return alt; + }, this); + } // Remove `null` entries. predictionRoots = predictionRoots.filter(tuple => !!tuple); @@ -144,9 +140,22 @@ class ModelCompositor { // The 'eventual' logic will be significantly more complex, though still manageable. let searchSpace = contextState.searchSpace[0]; + let newEmptyToken = false; + // Detect if we're starting a new context state. + let contextTokens = contextState.tokens; + let prefixTransform: Transform; + if(contextTokens.length == 0 || contextTokens[contextTokens.length - 1].isNew) { + if(this.isEmpty(inputTransform) || this.isWhitespace(inputTransform)) { + newEmptyToken = true; + prefixTransform = inputTransform; + } + } + // TODO: whitespace, backspace filtering. Do it here. // Whitespace is probably fine, actually. Less sure about backspace. + // TODO: If a brand new token with no text available, bypass the search. Or... fix the search? + let bestCorrectionCost: number; for(let matches of searchSpace.getBestMatches()) { // Corrections obtained: now to predict from them! @@ -168,7 +177,8 @@ class ModelCompositor { // Replace the existing context with the correction. let correctionTransform: Transform = { insert: correction, // insert correction string - deleteLeft: lexicalModel.wordbreak(context).length, // remove actual token string + // remove actual token string. If new token, there should be nothing to delete. + deleteLeft: newEmptyToken ? 0 : lexicalModel.wordbreak(context).length, id: finalInput.id } From 77a4e99ee1ce6903d83d1cb273931b213d2b94bf Mon Sep 17 00:00:00 2001 From: jahorton Date: Mon, 5 Oct 2020 15:00:41 +0700 Subject: [PATCH 07/31] fix(common/models): reinserts wordbreak, proper empty-string search --- .../headless/edit-distance/distance-modeler.js | 11 +++++++++-- .../worker/correction/distance-modeler.ts | 3 ++- common/predictive-text/worker/model-compositor.ts | 11 +++++++---- 3 files changed, 18 insertions(+), 7 deletions(-) diff --git a/common/predictive-text/unit_tests/headless/edit-distance/distance-modeler.js b/common/predictive-text/unit_tests/headless/edit-distance/distance-modeler.js index 148ac492f7..f6d0754ea2 100644 --- a/common/predictive-text/unit_tests/headless/edit-distance/distance-modeler.js +++ b/common/predictive-text/unit_tests/headless/edit-distance/distance-modeler.js @@ -398,8 +398,15 @@ describe('Correction Distance Modeler', function() { let iter = searchSpace.getBestMatches(); // While there's no input, insertion operations can produce suggestions. - let results = iter.next(); - assert.isFalse(results.done); + let resultState = iter.next(); + let results = resultState.value; + + // Just one suggestion should be returned. + assert.equal(results.length, 1); + assert.equal(results[0].totalCost, 0); // Gives a perfect match + assert.equal(results[0].inputSequence.length, 0); // for a state with no input and + assert.equal(results[0].matchString, ''); // an empty match string. + assert.isFalse(resultState.done); }); }); }); diff --git a/common/predictive-text/worker/correction/distance-modeler.ts b/common/predictive-text/worker/correction/distance-modeler.ts index e66f395af9..26f5b67658 100644 --- a/common/predictive-text/worker/correction/distance-modeler.ts +++ b/common/predictive-text/worker/correction/distance-modeler.ts @@ -319,7 +319,8 @@ namespace correction { this.completedPaths = [this.rootNode]; // Adds a base level queue to handle initial insertions. - let baseTier = new SearchSpaceTier(0, this.rootNode.buildInsertionEdges()); + // Start with _just_ the root node. Necessary for proper empty-token, empty-input handling! + let baseTier = new SearchSpaceTier(0, [this.rootNode]); this.tierOrdering.push(baseTier); this.selectionQueue.enqueue(baseTier); } diff --git a/common/predictive-text/worker/model-compositor.ts b/common/predictive-text/worker/model-compositor.ts index 9a0ac1b45a..24674bd268 100644 --- a/common/predictive-text/worker/model-compositor.ts +++ b/common/predictive-text/worker/model-compositor.ts @@ -86,7 +86,6 @@ class ModelCompositor { let keepOptionText = this.lexicalModel.wordbreak(postContext); let keepOption: Suggestion = null; - let predictionRoots: ProbabilityMass[] let rawPredictions: Distribution = []; // Used to restore whitespaces if operations would remove them. @@ -94,6 +93,8 @@ class ModelCompositor { // Section 1: determining 'prediction roots'. if(!this.contextTracker) { + let predictionRoots: ProbabilityMass[]; + // Generates raw prediction distributions for each valid input. Can only 'correct' // against the final input. // @@ -143,7 +144,6 @@ class ModelCompositor { let newEmptyToken = false; // Detect if we're starting a new context state. let contextTokens = contextState.tokens; - let prefixTransform: Transform; if(contextTokens.length == 0 || contextTokens[contextTokens.length - 1].isNew) { if(this.isEmpty(inputTransform) || this.isWhitespace(inputTransform)) { newEmptyToken = true; @@ -154,8 +154,6 @@ class ModelCompositor { // TODO: whitespace, backspace filtering. Do it here. // Whitespace is probably fine, actually. Less sure about backspace. - // TODO: If a brand new token with no text available, bypass the search. Or... fix the search? - let bestCorrectionCost: number; for(let matches of searchSpace.getBestMatches()) { // Corrections obtained: now to predict from them! @@ -287,6 +285,11 @@ class ModelCompositor { suggestions.forEach(function(suggestion) { if (suggestion.transform.insert.length > 0) { suggestion.transform.insert += punctuation.insertAfterWord; + + // If this is a suggestion after wordbreak input, make sure we preserve the wordbreak transform! + if(prefixTransform) { + models.prependTransform(suggestion.transform, prefixTransform); + } } }); From 091b3cadf0620a299b4dd11c2fae4a439b80f95a Mon Sep 17 00:00:00 2001 From: Darcy Wong Date: Mon, 5 Oct 2020 15:49:56 +0700 Subject: [PATCH 08/31] fix(web): Fix how layer is separated from key name --- web/source/kmwembedded.ts | 15 ++++++++++----- 1 file changed, 10 insertions(+), 5 deletions(-) diff --git a/web/source/kmwembedded.ts b/web/source/kmwembedded.ts index b76fea764f..a1cc6df089 100644 --- a/web/source/kmwembedded.ts +++ b/web/source/kmwembedded.ts @@ -386,14 +386,19 @@ namespace com.keyman.text { osk.vkbd.keyPending = null; // Changes for Build 353 to resolve KMEI popup key issues - keyName=keyName.replace('popup-',''); //remove popup prefix if present (unlikely) - - var t=keyName.split('-'),layer=(t.length>1?t[0]:core.keyboardProcessor.layerId); - keyName=t[t.length-1]; + keyName=keyName.replace('popup-',''); //remove popup prefix if present (unlikely) + + // Can't just split on '-' because some layers like ctrl-shift contain it. + let separatorIndex = keyName.lastIndexOf('-'); + var layer = core.keyboardProcessor.layerId; + if (separatorIndex > 0) { + layer = keyName.substring(0, separatorIndex); + keyName = keyName.substring(separatorIndex+1); + } if(layer == 'undefined') { layer=core.keyboardProcessor.layerId; } - + // Note: this assumes Lelem is properly attached and has an element interface. // Currently true in the Android and iOS apps. var Lelem=keymanweb.domManager.getLastActiveElement(),keyShiftState=com.keyman.text.KeyboardProcessor.getModifierState(layer); From 0bede038f88fc9b04c4b1d60609f264fb0909b4a Mon Sep 17 00:00:00 2001 From: Joshua Horton Date: Tue, 6 Oct 2020 08:05:30 +0700 Subject: [PATCH 09/31] chore(common/models): removes artifact from dev of prior commit Co-authored-by: Eddie Antonio Santos --- common/predictive-text/worker/model-compositor.ts | 1 - 1 file changed, 1 deletion(-) diff --git a/common/predictive-text/worker/model-compositor.ts b/common/predictive-text/worker/model-compositor.ts index 24674bd268..4331ddd210 100644 --- a/common/predictive-text/worker/model-compositor.ts +++ b/common/predictive-text/worker/model-compositor.ts @@ -101,7 +101,6 @@ class ModelCompositor { // This is the old, 12.0-13.0 'correction' style. if(allowSpace) { // Detect start of new word; prevent whitespace loss here. - //let postContext = models.applyTransform(inputTransform, context); predictionRoots = [{sample: inputTransform, p: 1.0}]; prefixTransform = inputTransform; } else { From 07067227bdf25cd673c29c75c98a33f777a4eafd Mon Sep 17 00:00:00 2001 From: jahorton Date: Tue, 6 Oct 2020 09:06:00 +0700 Subject: [PATCH 10/31] refactor(common/models): centralizes quotation logic, defs --- common/models/templates/src/index.ts | 1 + common/models/templates/src/quote-behavior.ts | 46 +++++++++++++++++++ .../worker/model-compositor.ts | 21 +++------ 3 files changed, 54 insertions(+), 14 deletions(-) create mode 100644 common/models/templates/src/quote-behavior.ts diff --git a/common/models/templates/src/index.ts b/common/models/templates/src/index.ts index 5d63fe73a5..a20b43f602 100644 --- a/common/models/templates/src/index.ts +++ b/common/models/templates/src/index.ts @@ -1,4 +1,5 @@ /// +/// // Add all namespaces defined here to the global scope: if (typeof module != 'undefined' && typeof module.exports != 'undefined') { diff --git a/common/models/templates/src/quote-behavior.ts b/common/models/templates/src/quote-behavior.ts new file mode 100644 index 0000000000..d71dd688dc --- /dev/null +++ b/common/models/templates/src/quote-behavior.ts @@ -0,0 +1,46 @@ +namespace models { + export enum QuoteBehavior { + noQuotes = "no-quotes", + useQuotes = "use-quotes", + default = "default-quotes" + } + + // For an "enum/namespace merge". See https://www.typescriptlang.org/docs/handbook/declaration-merging.html#merging-namespaces-with-classes + export namespace QuoteBehavior { + /** + * Applies the specified quote behavior to the provided `Transform`, mutating it as appropriate. + * @param transform The Transform to be mutated + * @param punctuation The active `LexicalModelPunctuation` settings + * @param defaultTo The default quote behavior to use (in case the current value is `.default`) + */ + export function apply(behavior: QuoteBehavior, text: string, punctuation: LexicalModelPunctuation, defaultTo: QuoteBehavior): string { + if(defaultTo == QuoteBehavior.default || !defaultTo) { + throw "Specified quote behavior may be ambiguous - default behavior not specified (may not be .default)"; + } + + if(behavior == QuoteBehavior.default) { + behavior = defaultTo; + } + + switch(behavior) { + case QuoteBehavior.noQuotes: + return text; + case QuoteBehavior.useQuotes: + let {open, close} = punctuation.quotesForKeepSuggestion; + + // TODO: Is this the right thing to do under RTL? + // We need an extra pass over this section to validate it. + if(punctuation.isRTL) { + let temp = close; + close = open; + open = temp; + } + + // This part's simple enough, at least. + return open + text + close; + default: + throw "Unsupported quote behavior state detected; implementation missing!"; + } + } + } +} \ No newline at end of file diff --git a/common/predictive-text/worker/model-compositor.ts b/common/predictive-text/worker/model-compositor.ts index 05b20bb745..ea2ab3c50e 100644 --- a/common/predictive-text/worker/model-compositor.ts +++ b/common/predictive-text/worker/model-compositor.ts @@ -221,7 +221,7 @@ class ModelCompositor { } keepOption = models.transformToSuggestion(keepTransform, prediction.p); - keepOption = this.toAnnotatedKeepSuggestion(keepOption, true); + keepOption = this.toAnnotatedKeepSuggestion(keepOption, models.QuoteBehavior.noQuotes); } else { let existingSuggestion = suggestionDistribMap[displayText]; if(existingSuggestion) { @@ -283,25 +283,18 @@ class ModelCompositor { return suggestions; } - private toAnnotatedKeepSuggestion(suggestion: Suggestion & {p?: number}, noQuotes: boolean = false): Suggestion & {p?: number} { - let { open, close } = this.punctuation.quotesForKeepSuggestion; - - if(noQuotes) { - open = ''; - close = ''; - } else if(this.punctuation.isRTL) { - let temp = close; - close = open; - open = temp; - } + private toAnnotatedKeepSuggestion(suggestion: Suggestion & {p?: number}, + quoteBehavior: models.QuoteBehavior = models.QuoteBehavior.default): Suggestion & {p?: number} { + // A method-internal 'import' of the enum. + let QuoteBehavior = models.QuoteBehavior; return { transform: suggestion.transform, transformId: suggestion.transformId, - displayAs: open + suggestion.displayAs + close, + displayAs: QuoteBehavior.apply(quoteBehavior, suggestion.displayAs, this.punctuation, QuoteBehavior.useQuotes), tag: 'keep', p: suggestion.p - } + }; } /** From 95e5ce47bf772dcb4a7cf8c73014e6267683c0a9 Mon Sep 17 00:00:00 2001 From: jahorton Date: Tue, 6 Oct 2020 10:08:16 +0700 Subject: [PATCH 11/31] feat(common/models): quote behavior unit tests --- .../templates/test/test-quote-behavior.js | 150 ++++++++++++++++++ 1 file changed, 150 insertions(+) create mode 100644 common/models/templates/test/test-quote-behavior.js diff --git a/common/models/templates/test/test-quote-behavior.js b/common/models/templates/test/test-quote-behavior.js new file mode 100644 index 0000000000..80964b7a7f --- /dev/null +++ b/common/models/templates/test/test-quote-behavior.js @@ -0,0 +1,150 @@ +/* + * Unit tests for the priority queue. + */ + +var assert = require('chai').assert; +var QuoteBehavior = require('../').models.QuoteBehavior; + +describe('Quote behaviors', function() { + describe('Script directionality', function() { + it('(default)', function() { + let englishPunctuation = { + quotesForKeepSuggestion: { open: `“`, close: `”`}, + insertAfterWord: " " + } + + var plainQuotedHello; + plainQuotedHello = QuoteBehavior.apply(QuoteBehavior.useQuotes, "hello", englishPunctuation, QuoteBehavior.useQuotes); + assert.equal(plainQuotedHello, "“hello”"); + }); + + it('LTR', function() { + let englishPunctuation = { + quotesForKeepSuggestion: { open: `“`, close: `”`}, + insertAfterWord: " ", + isRTL: false + } + + var plainQuotedHello; + plainQuotedHello = QuoteBehavior.apply(QuoteBehavior.useQuotes, "hello", englishPunctuation, QuoteBehavior.useQuotes); + assert.equal(plainQuotedHello, "“hello”"); + }); + + it.skip('RTL', function() { + // TODO: + }); + }); + + describe('Application', function() { + it('.useQuotes', function() { + let englishPunctuation = { + quotesForKeepSuggestion: { open: `“`, close: `”`}, + insertAfterWord: " " + } + + var plainQuotedHello; + plainQuotedHello = QuoteBehavior.apply(QuoteBehavior.useQuotes, "hello", englishPunctuation, QuoteBehavior.useQuotes); + assert.equal(plainQuotedHello, "“hello”"); + + plainQuotedHello = QuoteBehavior.apply(QuoteBehavior.useQuotes, "hello", englishPunctuation, QuoteBehavior.noQuotes); + assert.equal(plainQuotedHello, "“hello”"); + + let angleQuotePunctuation = { + quotesForKeepSuggestion: { open: `«`, close: `»`}, + insertAfterWord: " " + } + + var angleQuotedHello; + angleQuotedHello = QuoteBehavior.apply(QuoteBehavior.useQuotes, "hello", angleQuotePunctuation, QuoteBehavior.useQuotes); + assert.equal(angleQuotedHello, "«hello»"); + + angleQuotedHello = QuoteBehavior.apply(QuoteBehavior.useQuotes, "hello", angleQuotePunctuation, QuoteBehavior.noQuotes); + assert.equal(angleQuotedHello, "«hello»"); + }); + + it('.noQuotes', function() { + let englishPunctuation = { + quotesForKeepSuggestion: { open: `“`, close: `”`}, + insertAfterWord: " " + } + + var plainQuotedHello; + plainQuotedHello = QuoteBehavior.apply(QuoteBehavior.noQuotes, "hello", englishPunctuation, QuoteBehavior.useQuotes); + assert.equal(plainQuotedHello, "hello"); + + plainQuotedHello = QuoteBehavior.apply(QuoteBehavior.noQuotes, "hello", englishPunctuation, QuoteBehavior.noQuotes); + assert.equal(plainQuotedHello, "hello"); + + let angleQuotePunctuation = { + quotesForKeepSuggestion: { open: `«`, close: `»`}, + insertAfterWord: " " + } + + var angleQuotedHello; + angleQuotedHello = QuoteBehavior.apply(QuoteBehavior.noQuotes, "hello", angleQuotePunctuation, QuoteBehavior.useQuotes); + assert.equal(angleQuotedHello, "hello"); + + angleQuotedHello = QuoteBehavior.apply(QuoteBehavior.noQuotes, "hello", angleQuotePunctuation, QuoteBehavior.noQuotes); + assert.equal(angleQuotedHello, "hello"); + }); + + it('.default -> .useQuotes', function() { + let englishPunctuation = { + quotesForKeepSuggestion: { open: `“`, close: `”`}, + insertAfterWord: " " + } + + var plainQuotedHello; + plainQuotedHello = QuoteBehavior.apply(QuoteBehavior.default, "hello", englishPunctuation, QuoteBehavior.useQuotes); + assert.equal(plainQuotedHello, "“hello”"); + + let angleQuotePunctuation = { + quotesForKeepSuggestion: { open: `«`, close: `»`}, + insertAfterWord: " " + } + + var angleQuotedHello; + angleQuotedHello = QuoteBehavior.apply(QuoteBehavior.default, "hello", angleQuotePunctuation, QuoteBehavior.useQuotes); + assert.equal(angleQuotedHello, "«hello»"); + }); + + it('.default -> .noQuotes', function() { + let englishPunctuation = { + quotesForKeepSuggestion: { open: `“`, close: `”`}, + insertAfterWord: " " + } + + var plainQuotedHello; + plainQuotedHello = QuoteBehavior.apply(QuoteBehavior.default, "hello", englishPunctuation, QuoteBehavior.noQuotes); + assert.equal(plainQuotedHello, "hello"); + + let angleQuotePunctuation = { + quotesForKeepSuggestion: { open: `«`, close: `»`}, + insertAfterWord: " " + } + + var angleQuotedHello; + angleQuotedHello = QuoteBehavior.apply(QuoteBehavior.default, "hello", angleQuotePunctuation, QuoteBehavior.noQuotes); + assert.equal(angleQuotedHello, "hello"); + }); + + it('Error case: .default as fall-back behavior', function() { + let englishPunctuation = { + quotesForKeepSuggestion: { open: `“`, close: `”`}, + insertAfterWord: " " + } + + assert.throws(function() { + QuoteBehavior.apply(QuoteBehavior.default, "hello", englishPunctuation, QuoteBehavior.default); + }); + + assert.throws(function() { + QuoteBehavior.apply(QuoteBehavior.useQuotes, "hello", englishPunctuation, QuoteBehavior.default); + }); + + assert.throws(function() { + QuoteBehavior.apply(QuoteBehavior.noQuotes, "hello", englishPunctuation, QuoteBehavior.default); + }); + }); + }); +}); \ No newline at end of file From 8d5b70cd773a32bb5bb9bfa42df613efd5a04763 Mon Sep 17 00:00:00 2001 From: jahorton Date: Tue, 6 Oct 2020 10:39:32 +0700 Subject: [PATCH 12/31] feat(common/models): transformToSuggestion unit test --- common/models/templates/src/common.ts | 10 ++- common/models/templates/test/test-common.js | 70 +++++++++++++++++++ .../templates/test/test-quote-behavior.js | 2 +- 3 files changed, 78 insertions(+), 4 deletions(-) create mode 100644 common/models/templates/test/test-common.js diff --git a/common/models/templates/src/common.ts b/common/models/templates/src/common.ts index fe3b285c7c..73d360a2e7 100644 --- a/common/models/templates/src/common.ts +++ b/common/models/templates/src/common.ts @@ -71,11 +71,15 @@ namespace models { export function transformToSuggestion(transform: Transform): Suggestion; export function transformToSuggestion(transform: Transform, p: number): Suggestion & {p: number}; export function transformToSuggestion(transform: Transform, p?: number): Suggestion & {p?: number} { - return { + let suggestion: Suggestion & {p?: number} = { transform: transform, transformId: transform.id, - displayAs: transform.insert, - p: p + displayAs: transform.insert }; + + if(p === 0 || p) { + suggestion.p = p; + } + return suggestion; } } diff --git a/common/models/templates/test/test-common.js b/common/models/templates/test/test-common.js new file mode 100644 index 0000000000..61892ad985 --- /dev/null +++ b/common/models/templates/test/test-common.js @@ -0,0 +1,70 @@ +/* + * Unit tests for common utility functions/methods. + */ + +var assert = require('chai').assert; +var models = require('../').models; + +describe('Common utility functions', function() { + // TODO: unit tests for other common utility functions + + describe('transformToSuggestion', function() { + it('p: undefined', function() { + let suggestion = { + transform: { + insert: 'hello', + deleteLeft: 0, + id: 0 + }, + transformId: 0, + displayAs: 'hello' + }; + + assert.deepEqual(models.transformToSuggestion(suggestion.transform), suggestion); + }); + + it('p: 0', function() { + let suggestion = { + transform: { + insert: 'hello', + deleteLeft: 0, + id: 0 + }, + transformId: 0, + displayAs: 'hello', + p: 0 + }; + + assert.deepEqual(models.transformToSuggestion(suggestion.transform, 0), suggestion); + }); + + it('p > 0', function() { + let suggestion = { + transform: { + insert: 'hello', + deleteLeft: 0, + id: 0 + }, + transformId: 0, + displayAs: 'hello', + p: 0.5 + }; + + assert.deepEqual(models.transformToSuggestion(suggestion.transform, 0.5), suggestion); + }); + + it('properly handles the transformId', function() { + let suggestion = { + transform: { + insert: 'hello', + deleteLeft: 0, + id: 3 + }, + transformId: 3, // Ensures there isn't a separate ID seed in use. + displayAs: 'hello' + }; + + assert.deepEqual(models.transformToSuggestion(suggestion.transform), suggestion); + }); + }); +}); diff --git a/common/models/templates/test/test-quote-behavior.js b/common/models/templates/test/test-quote-behavior.js index 80964b7a7f..339cf0af9d 100644 --- a/common/models/templates/test/test-quote-behavior.js +++ b/common/models/templates/test/test-quote-behavior.js @@ -1,5 +1,5 @@ /* - * Unit tests for the priority queue. + * Unit tests for quote behaviors. */ var assert = require('chai').assert; From 5becd0973230d5b08cb10b8b708fc3f065a2f7a3 Mon Sep 17 00:00:00 2001 From: jahorton Date: Tue, 6 Oct 2020 11:06:03 +0700 Subject: [PATCH 13/31] feat(common/models): suggestion annotation unit test --- .../headless/worker-model-compositor.js | 68 +++++++++++++++++++ 1 file changed, 68 insertions(+) diff --git a/common/predictive-text/unit_tests/headless/worker-model-compositor.js b/common/predictive-text/unit_tests/headless/worker-model-compositor.js index bdd60699ca..1ba4ba0497 100644 --- a/common/predictive-text/unit_tests/headless/worker-model-compositor.js +++ b/common/predictive-text/unit_tests/headless/worker-model-compositor.js @@ -2,6 +2,8 @@ * Integration tests for the model compositor with the trie model. */ +const { models } = require('../../build/intermediate'); + var assert = require('chai').assert; var TrieModel = require('../../build/intermediate').models.TrieModel; var ModelCompositor = require('../../build/intermediate').ModelCompositor; @@ -66,4 +68,70 @@ describe('ModelCompositor', function() { // 'the' should be the intended the result here. assert.isAbove(theSuggestion.p, thrSuggestion.p); }); + + // The nomenclature's a minor sneak-peek from child PRs. + describe('toAnnotatedSuggestion', function() { + let baseSuggestion = { + transform: { + insert: 'hello', + deleteLeft: 0, + id: 0 + }, + transformId: 0, + displayAs: 'hello' + }; + + let englishPunctuation = { + quotesForKeepSuggestion: { open: `“`, close: `”`}, + insertAfterWord: ' ' + }; + + let angledPunctuation = { + quotesForKeepSuggestion: { open: `«`, close: `»`}, + insertAfterWord: " " + } + + describe("'keep'", function() { + let annotationTest = function(punctuation, displayText, quoteStyle) { + let options = { + punctuation: punctuation + }; + + let model = new models.DummyModel(options); + let compositor = new ModelCompositor(model); + + var keep; + if(quoteStyle) { + keep = compositor.toAnnotatedKeepSuggestion(baseSuggestion, quoteStyle); + } else { + keep = compositor.toAnnotatedKeepSuggestion(baseSuggestion); + } + + // Make sure we didn't accidentally leak any mutations to the parameter. + assert.notDeepEqual(keep, baseSuggestion); + + assert.equal(keep.displayAs, displayText); + assert.equal(keep.tag, 'keep'); + } + + it('quoteBehavior: (.default)', function() { + annotationTest(englishPunctuation, "“hello”"); + annotationTest(angledPunctuation, "«hello»"); + }); + + it('quoteBehavior: .useQuotes', function() { + annotationTest(englishPunctuation, "“hello”", models.QuoteBehavior.useQuotes); + annotationTest(angledPunctuation, "«hello»", models.QuoteBehavior.useQuotes); + }); + + it('quoteBehavior: .noQuotes', function() { + annotationTest(englishPunctuation, "hello", models.QuoteBehavior.noQuotes); + annotationTest(angledPunctuation, "hello", models.QuoteBehavior.noQuotes); + }); + + it.skip('RTL test', function() { + // TODO: + }); + }); + }); }); From 258e4b4effcf00df9be9bbff6271aebdde30f7d3 Mon Sep 17 00:00:00 2001 From: Marc Durdin Date: Wed, 7 Oct 2020 11:43:13 +1100 Subject: [PATCH 14/31] fix(windows): Some registry keys could have incorrect permissions Fixes #3665. On some systems, subkeys of HKCU\Software\Keyman could have incorrect permissions and these would not be corrected with earlier fixes such as in #2316. This fix resolves the problem by recursively correcting permissions on all subkeys, rather than just the top two levels. This issue caused Metro-style applications (Windows Store apps) to fail to accept Keyman keyboard input. --- windows/src/engine/keyman/main.pas | 46 +++++++++++++++++++----------- 1 file changed, 30 insertions(+), 16 deletions(-) diff --git a/windows/src/engine/keyman/main.pas b/windows/src/engine/keyman/main.pas index 18ad8516e8..a4559025d3 100644 --- a/windows/src/engine/keyman/main.pas +++ b/windows/src/engine/keyman/main.pas @@ -1,18 +1,18 @@ (* Name: main Copyright: Copyright (C) SIL International. - Documentation: - Description: + Documentation: + Description: Create Date: 1 Aug 2006 Modified Date: 25 Oct 2016 Authors: mcdurdin - Related Files: - Dependencies: + Related Files: + Dependencies: - Bugs: - Todo: - Notes: + Bugs: + Todo: + Notes: History: 01 Aug 2006 - mcdurdin - Initial version 02 Aug 2006 - mcdurdin - Timeout when Beta expires 04 Dec 2006 - mcdurdin - Block Keyman loading if KM5/6 running @@ -35,8 +35,9 @@ uses Vcl.Dialogs, Vcl.Forms, Winapi.Windows, - System.Win.Registry, + System.Classes, System.SysUtils, + System.Win.Registry, GetOsVersion, Keyman.System.Security, @@ -189,17 +190,30 @@ end; procedure InitialiseRegistrySecurity; var r: TRegistry; + + procedure ProcessKey(const root: string); + var + s: string; + str: TStringList; + begin + if r.OpenKey('\' + root, True) then + begin + str := TStringList.Create; + try + r.GetKeyNames(str); + GrantPermissionToAllApplicationPackages(r.CurrentKey, KEY_READ); + for s in str do + ProcessKey(root + '\' + s); + finally + str.Free; + end; + end; + end; + begin r := TRegistry.Create; try - if r.OpenKey(SRegKey_KeymanRoot_CU, True) then - begin - GrantPermissionToAllApplicationPackages(r.CurrentKey, KEY_READ); - // #1680 - on some systems, HKCU\Software\Keyman\Keyman Engine is not - // inheriting permissions from HKCU\Software\Keyman - if r.OpenKey('\' + SRegKey_KeymanEngineRoot_CU, True) then - GrantPermissionToAllApplicationPackages(r.CurrentKey, KEY_READ); - end; + ProcessKey(SRegKey_KeymanRoot_CU); finally r.Free; end; From 5e567c5a2f43a8da524fb74b5a6607e7207d89f1 Mon Sep 17 00:00:00 2001 From: Marc Durdin Date: Wed, 7 Oct 2020 14:05:11 +1100 Subject: [PATCH 15/31] fix(developer): ci uses repo tier and version --- developer/js/build.sh | 102 ++++++++++++++++++++---------------------- 1 file changed, 48 insertions(+), 54 deletions(-) diff --git a/developer/js/build.sh b/developer/js/build.sh index eccc7baf76..07579e9fd1 100755 --- a/developer/js/build.sh +++ b/developer/js/build.sh @@ -24,80 +24,74 @@ build () { } display_usage ( ) { - echo "Usage: $0 [-test] [-version version] [-tier tier]" + echo "Usage: $0 [-test] [-publish-to-npm]" echo " $0 -help" echo echo " -help displays this screen and exits" - echo " -version version sets the package version before building" echo " -test runs unit tests after building" echo " -tdd runs unit tests WITHOUT building" echo " -publish-to-npm publishes the current version to the npm package index" - echo " -tier tier also sets the package version tier and npm tag (alpha, beta, stable) before building or publishing" - echo " If version has 4 components, only first three are used." + echo " -dry-run do build, etc, but don't actually publish" } ################################ Main script ################################ run_tests=0 install_dependencies=1 -publish_version= -publish_tier= -lastkey= should_publish=0 npm_dist_tag= +should_dry_run=0 # Process command-line arguments while [[ $# -gt 0 ]] ; do key="$1" - if [[ -z "$lastkey" ]]; then - case $key in - -help|-h) - display_usage - exit - ;; - -skip-package-install|-S) - install_dependencies=0 - ;; - -test) - run_tests=1 - ;; - -tdd) - run_tests=1 - install_dependencies=0 - ;; - -version) - lastkey=$key - ;; - -tier) - lastkey=$key - ;; - -publish-to-npm) - should_publish=1 - ;; - *) - echo "$0: invalid option: $key" - display_usage - exit $EX_USAGE - esac - else - case $lastkey in - -version) - publish_version=$key - ;; - -tier) - publish_tier=$key - ;; - *) - # Should be impossible to reach ;-) - echo "$0: invalid option: $lastkey" - display_usage - exit $EX_USAGE - esac - lastkey= - fi + case $key in + -help|-h) + display_usage + exit + ;; + -dry-run) + should_dry_run=1 + ;; + -skip-package-install|-S) + install_dependencies=0 + ;; + -test) + run_tests=1 + ;; + -tdd) + run_tests=1 + install_dependencies=0 + ;; + -version) + echo "Warning: -version is now ignored" + ;; + -tier) + echo "Warning: -tier is now ignored" + ;; + -publish-to-npm) + should_publish=1 + ;; + *) + echo "$0: invalid option: $key" + display_usage + exit $EX_USAGE + esac shift # past the processed argument done +# Dry run settings +if (( should_dry_run )); then + DRY_RUN="echo dry run:" +else + DRY_RUN= +fi + +# We now ignore the version and tier strings. + +publish_version=`cat "$KEYMAN_ROOT/VERSION.md"` +publish_tier=`cat "$KEYMAN_ROOT/TIER.md"` + # Validate the publish_version if [ ! -z "$publish_version" ]; then # Remove final component if more than 3 components passed @@ -155,5 +149,5 @@ if (( should_publish )); then # a package in the @keymanapp scope on the public npm package index. # # See `npm help publish` for more details. - npm publish --access public --tag "${npm_dist_tag:=latest}" || fail "Could not publish ${npm_dist_tag} release." + $DRY_RUN npm publish --access public --tag "${npm_dist_tag:=latest}" || fail "Could not publish ${npm_dist_tag} release." fi From 4b3046a478b7b7b8658f40ce3e5a04ef48d25ee5 Mon Sep 17 00:00:00 2001 From: Marc Durdin Date: Wed, 7 Oct 2020 14:25:29 +1100 Subject: [PATCH 16/31] chore: tweaks to script --- developer/js/build.sh | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/developer/js/build.sh b/developer/js/build.sh index 07579e9fd1..b1547cf52c 100755 --- a/developer/js/build.sh +++ b/developer/js/build.sh @@ -82,13 +82,11 @@ done # Dry run settings if (( should_dry_run )); then - DRY_RUN="echo dry run:" + DRY_RUN=--dry-run else DRY_RUN= fi -# We now ignore the version and tier strings. - publish_version=`cat "$KEYMAN_ROOT/VERSION.md"` publish_tier=`cat "$KEYMAN_ROOT/TIER.md"` @@ -149,5 +147,5 @@ if (( should_publish )); then # a package in the @keymanapp scope on the public npm package index. # # See `npm help publish` for more details. - $DRY_RUN npm publish --access public --tag "${npm_dist_tag:=latest}" || fail "Could not publish ${npm_dist_tag} release." + npm publish $DRY_RUN --access public --tag "${npm_dist_tag:=latest}" || fail "Could not publish ${npm_dist_tag} release." fi From 3319f5d29d3621694e60a1df7164f24957f5f73a Mon Sep 17 00:00:00 2001 From: Marc Durdin Date: Wed, 7 Oct 2020 14:34:35 +1100 Subject: [PATCH 17/31] fix: call to build.sh now has invalid variables --- windows/src/developer/inst/copydev.in | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/windows/src/developer/inst/copydev.in b/windows/src/developer/inst/copydev.in index e3e761404f..ffb86c28eb 100644 --- a/windows/src/developer/inst/copydev.in +++ b/windows/src/developer/inst/copydev.in @@ -73,9 +73,9 @@ heat-model-compiler: cd $(KEYMAN_MODELCOMPILER_ROOT) !ifdef GIT_BASH_FOR_KEYMAN - $(GIT_BASH_FOR_KEYMAN) build.sh -version "$VERSION" -tier "$(TIER)" + $(GIT_BASH_FOR_KEYMAN) build.sh !else - start /wait .\build.sh -version "$VERSION" -tier "$(TIER)" + start /wait .\build.sh !endif # We use `npm pack` to extract only the aspects of the model-compiler actually needed for distribution. # While we could use npm-bundle or similar, that adds extra, unwanted cruft; our approach gives us more From 7f4a4b5c878e943c20aa52816917d492d5c01021 Mon Sep 17 00:00:00 2001 From: Marc Durdin Date: Wed, 7 Oct 2020 14:16:24 +1100 Subject: [PATCH 18/31] fix(windows): update CI for publishing desktop help This updates the build script to use the version data available in the repository rather than relying on environment. --- windows/src/buildtools/help-keyman-com.sh | 20 ++++++++++++-------- 1 file changed, 12 insertions(+), 8 deletions(-) diff --git a/windows/src/buildtools/help-keyman-com.sh b/windows/src/buildtools/help-keyman-com.sh index dc2f40581e..2e4ab9b9bb 100644 --- a/windows/src/buildtools/help-keyman-com.sh +++ b/windows/src/buildtools/help-keyman-com.sh @@ -5,6 +5,15 @@ # SHLVL=0 +set -e +set -u + +## START STANDARD BUILD SCRIPT INCLUDE +# adjust relative paths as necessary +THIS_SCRIPT="$(greadlink -f "${BASH_SOURCE[0]}" 2>/dev/null || readlink -f "${BASH_SOURCE[0]}")" +. "$(dirname "$THIS_SCRIPT")/../../../resources/build/build-utils.sh" +## END STANDARD BUILD SCRIPT INCLUDE + # # Allows us to check for existence of subfolders in help/ # @@ -19,7 +28,6 @@ shopt -s nullglob # These are passed via environment: # # HELP_KEYMAN_COM = the home of the help.keyman.com repository -# MAJOR_VERSION = 10.0, 11.0, etc # # That repo must have push to origin configured and logged in # @@ -29,11 +37,6 @@ if [ -z ${HELP_KEYMAN_COM+x} ]; then exit 1 fi -if [ -z ${MAJOR_VERSION+x} ]; then - >&2 echo "Not uploading documentation: must set MAJOR_VERSION in environment." - exit 1 -fi - if [ ! -d "$HELP_KEYMAN_COM/products/desktop/" ]; then >&2 echo "HELP_KEYMAN_COM path ($HELP_KEYMAN_COM) does not appear to be valid." exit 1 @@ -82,7 +85,7 @@ function upload_keyman_desktop_help { return 0 fi - local dstpath="$HELP_KEYMAN_COM/products/desktop/$MAJOR_VERSION/docs" + local dstpath="$HELP_KEYMAN_COM/products/desktop/$VERSION_RELEASE/docs" mkdir -p "$dstpath" @@ -92,6 +95,7 @@ function upload_keyman_desktop_help { # # Commit and push to the help.keyman.com repo +# TODO: turn this into a pull request # function commit_and_push { @@ -100,7 +104,7 @@ function commit_and_push { pushd $HELP_KEYMAN_COM git config user.name "Keyman Build Server" git config user.email "keyman-server@users.noreply.github.com" - git add products/desktop/$MAJOR_VERSION/docs || return 1 + git add products/desktop/$VERSION_RELEASE/docs || return 1 git diff --cached --no-ext-diff --quiet --exit-code && { # if no changes then don't do anything. echo "No changes to commit" From 31e03ed06de7e7637ab540a18369f15f38124fec Mon Sep 17 00:00:00 2001 From: Marc Durdin Date: Wed, 7 Oct 2020 14:25:53 +1100 Subject: [PATCH 19/31] fix(web): ci uses repo tier and version Previously, the build would take the TeamCity TIER and VERSION, which are eliminated in favour of the repo sources (the details are populated correctly for alpha but are not needed given we have TIER.md and VERSION.md). This is analogous to #3670. --- common/models/types/build.sh | 84 ++++++++++++++++-------------------- 1 file changed, 36 insertions(+), 48 deletions(-) diff --git a/common/models/types/build.sh b/common/models/types/build.sh index d141d9d2c7..b96752e350 100755 --- a/common/models/types/build.sh +++ b/common/models/types/build.sh @@ -17,73 +17,61 @@ EX_USAGE=64 display_usage ( ) { - echo "Usage: $0 [-test] [-version version] [-tier tier]" + echo "Usage: $0 [-test] [-publish-to-npm]" echo " $0 -help" echo echo " -help displays this screen and exits" - echo " -version version sets the package version before building" echo " -test runs tests" echo " -publish-to-npm publishes the current version to the npm package index" - echo " -tier tier also sets the package version tier and npm tag (alpha, beta, stable) before building or publishing" - echo " If version has 4 components, only first three are used." + echo " -dry-run do test, etc, but don't actually publish" } ################################ Main script ################################ run_tests=0 install_dependencies=1 -publish_version= -publish_tier= -lastkey= should_publish=0 npm_dist_tag= # Process command-line arguments while [[ $# -gt 0 ]] ; do key="$1" - if [[ -z "$lastkey" ]]; then - case $key in - -help|-h) - display_usage - exit - ;; - -test) - run_tests=1 - install_dependencies=0 - ;; - -version) - lastkey=$key - ;; - -tier) - lastkey=$key - ;; - -publish-to-npm) - should_publish=1 - ;; - *) - echo "$0: invalid option: $key" - display_usage - exit $EX_USAGE - esac - else - case $lastkey in - -version) - publish_version=$key - ;; - -tier) - publish_tier=$key - ;; - *) - # Should be impossible to reach ;-) - echo "$0: invalid option: $lastkey" - display_usage - exit $EX_USAGE - esac - lastkey= - fi + case $key in + -help|-h) + display_usage + exit + ;; + -test) + run_tests=1 + install_dependencies=0 + ;; + -version) + echo "Warning: -version is now ignored" + ;; + -tier) + echo "Warning: -tier is now ignored" + ;; + -publish-to-npm) + should_publish=1 + ;; + *) + echo "$0: invalid option: $key" + display_usage + exit $EX_USAGE + esac shift # past the processed argument done +# Dry run settings +if (( should_dry_run )); then + DRY_RUN=--dry-run +else + DRY_RUN= +fi + +publish_version=`cat "$KEYMAN_ROOT/VERSION.md"` +publish_tier=`cat "$KEYMAN_ROOT/TIER.md"` + # Validate the publish_version if [ ! -z "$publish_version" ]; then # Remove final component if more than 3 components passed @@ -145,5 +133,5 @@ if (( should_publish )); then # a package in the @keymanapp scope on the public npm package index. # # See `npm help publish` for more details. - npm publish --access public --tag "${npm_dist_tag:=latest}" || fail "Could not publish ${npm_dist_tag} release." + npm publish $DRY_RUN --access public --tag "${npm_dist_tag:=latest}" || fail "Could not publish ${npm_dist_tag} release." fi From 11d07f879ad2aa9e4c9e656e98730c3bb7a06c86 Mon Sep 17 00:00:00 2001 From: Marc Durdin Date: Wed, 7 Oct 2020 14:27:56 +1100 Subject: [PATCH 20/31] fix: missed line --- common/models/types/build.sh | 1 + 1 file changed, 1 insertion(+) diff --git a/common/models/types/build.sh b/common/models/types/build.sh index b96752e350..a8eaa30d73 100755 --- a/common/models/types/build.sh +++ b/common/models/types/build.sh @@ -32,6 +32,7 @@ run_tests=0 install_dependencies=1 should_publish=0 npm_dist_tag= +should_dry_run=0 # Process command-line arguments while [[ $# -gt 0 ]] ; do From a89ee3b7928e8213325c1a00dfdf126b536b5808 Mon Sep 17 00:00:00 2001 From: Marc Durdin Date: Wed, 7 Oct 2020 16:10:57 +1100 Subject: [PATCH 21/31] chore(web): address review comments --- common/models/types/build.sh | 3 +++ 1 file changed, 3 insertions(+) diff --git a/common/models/types/build.sh b/common/models/types/build.sh index a8eaa30d73..447f4d9a03 100755 --- a/common/models/types/build.sh +++ b/common/models/types/build.sh @@ -42,6 +42,9 @@ while [[ $# -gt 0 ]] ; do display_usage exit ;; + -dry-run) + should_dry_run=1 + ;; -test) run_tests=1 install_dependencies=0 From 59e150b2c19baeb94b30efbf63f0009d1ddbb487 Mon Sep 17 00:00:00 2001 From: Keyman Build Agent Date: Wed, 7 Oct 2020 14:00:57 -0400 Subject: [PATCH 22/31] auto: increment master version to 14.0.156 --- HISTORY.md | 6 ++++++ VERSION.md | 2 +- .../web/input-processor/package-lock.json | 2 +- common/core/web/input-processor/package.json | 14 ++++++------- .../web/keyboard-processor/package-lock.json | 2 +- .../core/web/keyboard-processor/package.json | 10 +++++----- .../core/web/tools/recorder/package-lock.json | 2 +- common/core/web/tools/recorder/package.json | 10 +++++----- .../tools/sentry-manager/package-lock.json | 2 +- .../web/tools/sentry-manager/package.json | 4 ++-- common/core/web/utils/package-lock.json | 2 +- common/core/web/utils/package.json | 6 +++--- common/models/templates/package-lock.json | 2 +- common/models/templates/package.json | 8 ++++---- common/models/types/package-lock.json | 2 +- common/models/types/package.json | 2 +- common/models/wordbreakers/package-lock.json | 2 +- common/models/wordbreakers/package.json | 4 ++-- common/predictive-text/package-lock.json | 2 +- common/predictive-text/package.json | 14 ++++++------- developer/js/package-lock.json | 2 +- developer/js/package.json | 8 ++++---- lerna.json | 2 +- resources/gosh/package-lock.json | 2 +- resources/gosh/package.json | 2 +- resources/web-environment/package-lock.json | 2 +- resources/web-environment/package.json | 4 ++-- web/package-lock.json | 2 +- web/package.json | 20 +++++++++---------- 29 files changed, 74 insertions(+), 68 deletions(-) diff --git a/HISTORY.md b/HISTORY.md index e70f220d45..ef6d3e9071 100644 --- a/HISTORY.md +++ b/HISTORY.md @@ -1,5 +1,11 @@ # Keyman Version History +## 14.0.155 alpha 2020-10-07 + +* refactor(common/models): centralizes suggestion & keep inits (#3645) +* fix(common/models): predictions after typed whitespace (#3657) +* fix(web): Fix how layer is separated from key name (#3659) + ## 14.0.154 alpha 2020-10-05 * fix(windows): Upgrading keyboards with transient profiles (#3637) diff --git a/VERSION.md b/VERSION.md index de31f8e7c7..a5d1732ed2 100644 --- a/VERSION.md +++ b/VERSION.md @@ -1 +1 @@ -14.0.155 \ No newline at end of file +14.0.156 \ No newline at end of file diff --git a/common/core/web/input-processor/package-lock.json b/common/core/web/input-processor/package-lock.json index c65405e442..6ffd8d2d40 100644 --- a/common/core/web/input-processor/package-lock.json +++ b/common/core/web/input-processor/package-lock.json @@ -1,6 +1,6 @@ { "name": "@keymanapp/input-processor", - "version": "14.0.155", + "version": "14.0.156", "lockfileVersion": 1, "requires": true, "dependencies": { diff --git a/common/core/web/input-processor/package.json b/common/core/web/input-processor/package.json index accb9cd943..896a0cf615 100644 --- a/common/core/web/input-processor/package.json +++ b/common/core/web/input-processor/package.json @@ -1,6 +1,6 @@ { "name": "@keymanapp/input-processor", - "version": "14.0.155", + "version": "14.0.156", "description": "The core text and prediction processing engine for KeymanWeb", "repository": { "type": "git", @@ -18,7 +18,7 @@ }, "homepage": "https://github.com/keymanapp/keyman#readme", "devDependencies": { - "@keymanapp/resources-gosh": "^14.0.155", + "@keymanapp/resources-gosh": "^14.0.156", "chai": "^4.2.0", "mocha": "^5.2.0", "typescript": "^3.8.3" @@ -29,11 +29,11 @@ "test": "gosh ./unit_tests/test.sh" }, "dependencies": { - "@keymanapp/keyboard-processor": "^14.0.155", - "@keymanapp/lexical-model-layer": "^14.0.155", - "@keymanapp/models-types": "^14.0.155", - "@keymanapp/web-environment": "^14.0.155", - "@keymanapp/web-utils": "^14.0.155", + "@keymanapp/keyboard-processor": "^14.0.156", + "@keymanapp/lexical-model-layer": "^14.0.156", + "@keymanapp/models-types": "^14.0.156", + "@keymanapp/web-environment": "^14.0.156", + "@keymanapp/web-utils": "^14.0.156", "@types/node": "^11.9.4", "eventemitter3": "^4.0.0", "ts-node": "^8.0.2" diff --git a/common/core/web/keyboard-processor/package-lock.json b/common/core/web/keyboard-processor/package-lock.json index e23e24293b..6550bc6268 100644 --- a/common/core/web/keyboard-processor/package-lock.json +++ b/common/core/web/keyboard-processor/package-lock.json @@ -1,6 +1,6 @@ { "name": "@keymanapp/keyboard-processor", - "version": "14.0.155", + "version": "14.0.156", "lockfileVersion": 1, "requires": true, "dependencies": { diff --git a/common/core/web/keyboard-processor/package.json b/common/core/web/keyboard-processor/package.json index b3ba09b60e..81feb7113a 100644 --- a/common/core/web/keyboard-processor/package.json +++ b/common/core/web/keyboard-processor/package.json @@ -1,6 +1,6 @@ { "name": "@keymanapp/keyboard-processor", - "version": "14.0.155", + "version": "14.0.156", "description": "Core module for Keyman keyboard support in KeymanWeb.", "repository": { "type": "git", @@ -18,7 +18,7 @@ }, "homepage": "https://github.com/keymanapp/keyman#readme", "devDependencies": { - "@keymanapp/resources-gosh": "^14.0.155", + "@keymanapp/resources-gosh": "^14.0.156", "chai": "^4.2.0", "mocha": "^5.2.0", "mocha-teamcity-reporter": "^3.0.0", @@ -31,9 +31,9 @@ "mocha": "mocha" }, "dependencies": { - "@keymanapp/models-types": "^14.0.155", - "@keymanapp/web-environment": "^14.0.155", - "@keymanapp/web-utils": "^14.0.155", + "@keymanapp/models-types": "^14.0.156", + "@keymanapp/web-environment": "^14.0.156", + "@keymanapp/web-utils": "^14.0.156", "@types/node": "^11.9.4", "ts-node": "^8.0.2" } diff --git a/common/core/web/tools/recorder/package-lock.json b/common/core/web/tools/recorder/package-lock.json index a07d7933a6..3947e2d29e 100644 --- a/common/core/web/tools/recorder/package-lock.json +++ b/common/core/web/tools/recorder/package-lock.json @@ -1,6 +1,6 @@ { "name": "@keymanapp/recorder-core", - "version": "14.0.155", + "version": "14.0.156", "lockfileVersion": 1, "requires": true, "dependencies": { diff --git a/common/core/web/tools/recorder/package.json b/common/core/web/tools/recorder/package.json index b74140c295..1d3335406a 100644 --- a/common/core/web/tools/recorder/package.json +++ b/common/core/web/tools/recorder/package.json @@ -1,6 +1,6 @@ { "name": "@keymanapp/recorder-core", - "version": "14.0.155", + "version": "14.0.156", "description": "Core classes used to develop KeymanWeb test cases based on keystrokes", "main": "index.js", "scripts": { @@ -17,10 +17,10 @@ }, "homepage": "https://github.com/keymanapp/keyman#readme", "dependencies": { - "@keymanapp/keyboard-processor": "^14.0.155", - "@keymanapp/models-types": "^14.0.155", - "@keymanapp/web-environment": "^14.0.155", - "@keymanapp/web-utils": "^14.0.155" + "@keymanapp/keyboard-processor": "^14.0.156", + "@keymanapp/models-types": "^14.0.156", + "@keymanapp/web-environment": "^14.0.156", + "@keymanapp/web-utils": "^14.0.156" }, "devDependencies": { "typescript": "^3.8.3" diff --git a/common/core/web/tools/sentry-manager/package-lock.json b/common/core/web/tools/sentry-manager/package-lock.json index bf7d4a2e74..7a02d7e6ab 100644 --- a/common/core/web/tools/sentry-manager/package-lock.json +++ b/common/core/web/tools/sentry-manager/package-lock.json @@ -1,6 +1,6 @@ { "name": "@keymanapp/web-sentry-manager", - "version": "14.0.155", + "version": "14.0.156", "lockfileVersion": 1, "requires": true, "dependencies": { diff --git a/common/core/web/tools/sentry-manager/package.json b/common/core/web/tools/sentry-manager/package.json index b8dd31e07f..74346f5f2a 100644 --- a/common/core/web/tools/sentry-manager/package.json +++ b/common/core/web/tools/sentry-manager/package.json @@ -1,6 +1,6 @@ { "name": "@keymanapp/web-sentry-manager", - "version": "14.0.155", + "version": "14.0.156", "description": "Common setup for KeymanWeb's Sentry-based error reporting", "main": "dist/index.js", "scripts": { @@ -20,7 +20,7 @@ "typescript": "^3.8.3" }, "dependencies": { - "@keymanapp/web-environment": "^14.0.155", + "@keymanapp/web-environment": "^14.0.156", "@sentry/browser": "^5.15.5" } } diff --git a/common/core/web/utils/package-lock.json b/common/core/web/utils/package-lock.json index f7584f41e4..6b8e77c70a 100644 --- a/common/core/web/utils/package-lock.json +++ b/common/core/web/utils/package-lock.json @@ -1,6 +1,6 @@ { "name": "@keymanapp/web-utils", - "version": "14.0.155", + "version": "14.0.156", "lockfileVersion": 1, "requires": true, "dependencies": { diff --git a/common/core/web/utils/package.json b/common/core/web/utils/package.json index 93a60ab77d..933f00b2bc 100644 --- a/common/core/web/utils/package.json +++ b/common/core/web/utils/package.json @@ -1,6 +1,6 @@ { "name": "@keymanapp/web-utils", - "version": "14.0.155", + "version": "14.0.156", "description": "Common utility functions used throughout other Keyman packages", "main": "./dist/index.js", "types": "./dist/index.d.ts", @@ -20,8 +20,8 @@ }, "homepage": "https://github.com/keymanapp/keyman#readme", "devDependencies": { - "@keymanapp/resources-gosh": "^14.0.155", - "@keymanapp/web-environment": "^14.0.155", + "@keymanapp/resources-gosh": "^14.0.156", + "@keymanapp/web-environment": "^14.0.156", "@types/node": "^14.0.5", "typescript": "^3.8.3" } diff --git a/common/models/templates/package-lock.json b/common/models/templates/package-lock.json index 3bfb56c524..ea84f30bad 100644 --- a/common/models/templates/package-lock.json +++ b/common/models/templates/package-lock.json @@ -1,6 +1,6 @@ { "name": "@keymanapp/models-templates", - "version": "14.0.155", + "version": "14.0.156", "lockfileVersion": 1, "requires": true, "dependencies": { diff --git a/common/models/templates/package.json b/common/models/templates/package.json index fedfd43d56..e29cdc3da9 100644 --- a/common/models/templates/package.json +++ b/common/models/templates/package.json @@ -1,6 +1,6 @@ { "name": "@keymanapp/models-templates", - "version": "14.0.155", + "version": "14.0.156", "description": "Backing model implementations (templates) for Keyman's modelling layer", "keywords": [ "lm", @@ -42,8 +42,8 @@ "url": "https://github.com/keymanapp/keyman/issues" }, "devDependencies": { - "@keymanapp/models-types": "^14.0.155", - "@keymanapp/web-utils": "^14.0.155", + "@keymanapp/models-types": "^14.0.156", + "@keymanapp/web-utils": "^14.0.156", "@types/chai": "^4.2.11", "@types/mocha": "^7.0.2", "@types/node": "^14.0.4", @@ -52,6 +52,6 @@ "typescript": "^3.8.3" }, "dependencies": { - "@keymanapp/models-wordbreakers": "^14.0.155" + "@keymanapp/models-wordbreakers": "^14.0.156" } } diff --git a/common/models/types/package-lock.json b/common/models/types/package-lock.json index 389ea4b2d3..b149bf767d 100644 --- a/common/models/types/package-lock.json +++ b/common/models/types/package-lock.json @@ -1,6 +1,6 @@ { "name": "@keymanapp/models-types", - "version": "14.0.155", + "version": "14.0.156", "lockfileVersion": 1, "requires": true, "dependencies": { diff --git a/common/models/types/package.json b/common/models/types/package.json index ebb4b761d7..9c9d0370f6 100644 --- a/common/models/types/package.json +++ b/common/models/types/package.json @@ -1,6 +1,6 @@ { "name": "@keymanapp/models-types", - "version": "14.0.155", + "version": "14.0.156", "description": "Type definitions in used in the modeling (lexical model/predictive text) component of Keyman.", "types": "./index.d.ts", "scripts": { diff --git a/common/models/wordbreakers/package-lock.json b/common/models/wordbreakers/package-lock.json index 9239d08f04..16b0eb4cf2 100644 --- a/common/models/wordbreakers/package-lock.json +++ b/common/models/wordbreakers/package-lock.json @@ -1,6 +1,6 @@ { "name": "@keymanapp/models-wordbreakers", - "version": "14.0.155", + "version": "14.0.156", "lockfileVersion": 1, "requires": true, "dependencies": { diff --git a/common/models/wordbreakers/package.json b/common/models/wordbreakers/package.json index 59492a9516..57e9963beb 100644 --- a/common/models/wordbreakers/package.json +++ b/common/models/wordbreakers/package.json @@ -1,6 +1,6 @@ { "name": "@keymanapp/models-wordbreakers", - "version": "14.0.155", + "version": "14.0.156", "description": "Word breakers bundled in the modeling layer", "keywords": [ "lexical model", @@ -40,7 +40,7 @@ "url": "https://github.com/keymanapp/keyman/issues" }, "devDependencies": { - "@keymanapp/models-types": "^14.0.155", + "@keymanapp/models-types": "^14.0.156", "@types/chai": "^4.2.11", "@types/mocha": "^7.0.2", "chai": "^4.2.0", diff --git a/common/predictive-text/package-lock.json b/common/predictive-text/package-lock.json index 830efb9885..850e736cc0 100644 --- a/common/predictive-text/package-lock.json +++ b/common/predictive-text/package-lock.json @@ -1,6 +1,6 @@ { "name": "@keymanapp/lexical-model-layer", - "version": "14.0.155", + "version": "14.0.156", "lockfileVersion": 1, "requires": true, "dependencies": { diff --git a/common/predictive-text/package.json b/common/predictive-text/package.json index bf1eaec4cc..431be8551e 100644 --- a/common/predictive-text/package.json +++ b/common/predictive-text/package.json @@ -1,6 +1,6 @@ { "name": "@keymanapp/lexical-model-layer", - "version": "14.0.155", + "version": "14.0.156", "description": "Keyman/Predictive Text integration layer", "main": "build/index.js", "scripts": { @@ -21,8 +21,8 @@ }, "homepage": "https://github.com/keymanapp/keyman#readme", "devDependencies": { - "@keymanapp/models-types": "^14.0.155", - "@keymanapp/resources-gosh": "^14.0.155", + "@keymanapp/models-types": "^14.0.156", + "@keymanapp/resources-gosh": "^14.0.156", "@types/node": "^10.17.21", "chai": "^4.2.0", "karma": "^4.2.0", @@ -46,10 +46,10 @@ "typescript": "^3.8.3" }, "dependencies": { - "@keymanapp/models-templates": "^14.0.155", - "@keymanapp/models-wordbreakers": "^14.0.155", - "@keymanapp/web-environment": "^14.0.155", - "@keymanapp/web-utils": "^14.0.155", + "@keymanapp/models-templates": "^14.0.156", + "@keymanapp/models-wordbreakers": "^14.0.156", + "@keymanapp/web-environment": "^14.0.156", + "@keymanapp/web-utils": "^14.0.156", "es6-shim": "^0.35.5", "string.prototype.codepointat": "^0.2.1", "string.prototype.startswith": "^0.2.0" diff --git a/developer/js/package-lock.json b/developer/js/package-lock.json index 84c1f97273..30fdcd0be5 100644 --- a/developer/js/package-lock.json +++ b/developer/js/package-lock.json @@ -1,6 +1,6 @@ { "name": "@keymanapp/lexical-model-compiler", - "version": "14.0.155", + "version": "14.0.156", "lockfileVersion": 1, "requires": true, "dependencies": { diff --git a/developer/js/package.json b/developer/js/package.json index 56a0bb69e9..f5008b4486 100644 --- a/developer/js/package.json +++ b/developer/js/package.json @@ -1,6 +1,6 @@ { "name": "@keymanapp/lexical-model-compiler", - "version": "14.0.155", + "version": "14.0.156", "description": "Keyman Developer lexical model compiler", "keywords": [ "keyboard", @@ -37,14 +37,14 @@ "node": ">=12.0.0" }, "dependencies": { - "@keymanapp/models-types": "^14.0.155", + "@keymanapp/models-types": "^14.0.156", "commander": "^3.0.0", "typescript": "^3.8.3", "xml2js": "^0.4.19" }, "devDependencies": { - "@keymanapp/models-templates": "^14.0.155", - "@keymanapp/models-wordbreakers": "^14.0.155", + "@keymanapp/models-templates": "^14.0.156", + "@keymanapp/models-wordbreakers": "^14.0.156", "@types/chai": "^4.1.7", "@types/mocha": "^5.2.7", "@types/node": "^10.14.6", diff --git a/lerna.json b/lerna.json index 8057db79ec..a4e5a3f8bd 100644 --- a/lerna.json +++ b/lerna.json @@ -16,5 +16,5 @@ "lerna", "typescript" ], - "version": "14.0.155" + "version": "14.0.156" } diff --git a/resources/gosh/package-lock.json b/resources/gosh/package-lock.json index 58ab6d723e..bf460be5c7 100644 --- a/resources/gosh/package-lock.json +++ b/resources/gosh/package-lock.json @@ -1,5 +1,5 @@ { "name": "@keymanapp/resources-gosh", - "version": "14.0.155", + "version": "14.0.156", "lockfileVersion": 1 } diff --git a/resources/gosh/package.json b/resources/gosh/package.json index 113d6d4c26..749725a4ad 100644 --- a/resources/gosh/package.json +++ b/resources/gosh/package.json @@ -1,6 +1,6 @@ { "name": "@keymanapp/resources-gosh", - "version": "14.0.155", + "version": "14.0.156", "description": "Good Ol' Shell", "author": "Marc Durdin (https://github.com/mcdurdin)", "contributors": [ diff --git a/resources/web-environment/package-lock.json b/resources/web-environment/package-lock.json index 7144802e22..eab4d51f10 100644 --- a/resources/web-environment/package-lock.json +++ b/resources/web-environment/package-lock.json @@ -1,5 +1,5 @@ { "name": "@keymanapp/web-environment", - "version": "14.0.155", + "version": "14.0.156", "lockfileVersion": 1 } diff --git a/resources/web-environment/package.json b/resources/web-environment/package.json index 64604cef40..6017b5c4db 100644 --- a/resources/web-environment/package.json +++ b/resources/web-environment/package.json @@ -1,6 +1,6 @@ { "name": "@keymanapp/web-environment", - "version": "14.0.155", + "version": "14.0.156", "description": "A compilation utility for passing select environment variables into our TS builds", "author": "Joshua Horton (https://github.com/jahorton)", "homepage": "https://github.com/keymanapp/keyman", @@ -17,6 +17,6 @@ "url": "https://github.com/keymanapp/keyman/issues" }, "devDependencies": { - "@keymanapp/resources-gosh": "^14.0.155" + "@keymanapp/resources-gosh": "^14.0.156" } } diff --git a/web/package-lock.json b/web/package-lock.json index e0cec38520..3381ff339b 100644 --- a/web/package-lock.json +++ b/web/package-lock.json @@ -1,6 +1,6 @@ { "name": "keyman", - "version": "14.0.155", + "version": "14.0.156", "lockfileVersion": 1, "requires": true, "dependencies": { diff --git a/web/package.json b/web/package.json index 1e91dafbd2..0add3c9b7b 100644 --- a/web/package.json +++ b/web/package.json @@ -1,6 +1,6 @@ { "name": "keyman", - "version": "14.0.155", + "version": "14.0.156", "description": "Facilitates text input in any language.", "repository": { "type": "git", @@ -18,8 +18,8 @@ }, "homepage": "https://github.com/keymanapp/keyman#readme", "devDependencies": { - "@keymanapp/resources-gosh": "^14.0.155", - "@keymanapp/web-sentry-manager": "^14.0.155", + "@keymanapp/resources-gosh": "^14.0.156", + "@keymanapp/web-sentry-manager": "^14.0.156", "@sentry/cli": "^1.52.3", "chai": "^4.2.0", "google-closure-compiler-java": "^20200224.0.0", @@ -52,13 +52,13 @@ "sentry-cli": "sentry-cli" }, "dependencies": { - "@keymanapp/input-processor": "^14.0.155", - "@keymanapp/keyboard-processor": "^14.0.155", - "@keymanapp/lexical-model-layer": "^14.0.155", - "@keymanapp/models-types": "^14.0.155", - "@keymanapp/recorder-core": "^14.0.155", - "@keymanapp/web-environment": "^14.0.155", - "@keymanapp/web-utils": "^14.0.155", + "@keymanapp/input-processor": "^14.0.156", + "@keymanapp/keyboard-processor": "^14.0.156", + "@keymanapp/lexical-model-layer": "^14.0.156", + "@keymanapp/models-types": "^14.0.156", + "@keymanapp/recorder-core": "^14.0.156", + "@keymanapp/web-environment": "^14.0.156", + "@keymanapp/web-utils": "^14.0.156", "@types/node": "^11.9.4", "es6-shim": "^0.35.5", "eventemitter3": "^4.0.0", From c655c4eaf5784296ba4d6409e1c1a88e967327be Mon Sep 17 00:00:00 2001 From: Marc Durdin Date: Thu, 8 Oct 2020 09:13:48 +1100 Subject: [PATCH 23/31] fix(windows): improve version numbers Release build executables should have 3 component version numbers with the version tag appended, e.g. keymandesktop-14.0.155-alpha-local.exe. Coming later, rename keymandesktop-version.exe to keyman-version.exe. --- developer/js/README.md | 7 ----- oem/firstvoices/windows/src/inst/download.in | 8 +++--- windows/src/buildtools/inst/copydebug.in | 24 ++++++++-------- windows/src/buildtools/inst/srcbackup.in | 4 +-- windows/src/desktop/inst/download.in | 14 +++++----- windows/src/desktop/insthelp/manifest.in | 2 +- windows/src/desktop/kmbrowserhost/manifest.in | 2 +- windows/src/desktop/kmshell/manifest.in | 2 +- windows/src/desktop/setup/debug-manifest.in | 2 +- windows/src/developer/TIKE/manifest.in | 2 +- windows/src/developer/inst/copydev.in | 28 +++++++++---------- windows/src/developer/kmcomp/manifest.in | 2 +- windows/src/developer/kmconvert/manifest.in | 2 +- windows/src/developer/setup/manifest.in | 2 +- windows/src/engine/inst/download.in | 6 ++-- windows/src/engine/keyman/manifest.in | 2 +- windows/src/engine/keymanx64/manifest.in | 2 +- windows/src/engine/kmcomapi/manifest.in | 2 +- windows/src/engine/mcompile/manifest.in | 2 +- windows/src/engine/tsysinfo/manifest.in | 2 +- windows/src/engine/tsysinfox64/manifest.in | 2 +- windows/src/global/help/version.in | 4 +-- windows/src/support/kmkb0045/manifest.in | 2 +- 23 files changed, 59 insertions(+), 66 deletions(-) diff --git a/developer/js/README.md b/developer/js/README.md index 0872cbef79..93fb0facfd 100644 --- a/developer/js/README.md +++ b/developer/js/README.md @@ -52,10 +52,3 @@ How to run the tests ./build.sh -test - -How to update the package version ---------------------------------- - -**NOTE**: this step should only be performed on the CI server: - - ./build.sh -version MAJOR.MINOR.${BUILD_NUMBER} [-tier (alpha|beta)] diff --git a/oem/firstvoices/windows/src/inst/download.in b/oem/firstvoices/windows/src/inst/download.in index e7d41cc41b..d4a7d42117 100644 --- a/oem/firstvoices/windows/src/inst/download.in +++ b/oem/firstvoices/windows/src/inst/download.in @@ -8,9 +8,9 @@ default: echo Please don't call this file directly -- used by Makefile copyredist-desktop: - -mkdir $(ROOT)\release\$VERSION - copy /Y firstvoices.msi $(ROOT)\release\$VERSION\firstvoices.msi - copy /Y firstvoices.exe $(ROOT)\release\$VERSION\firstvoices-$VERSION.exe + -mkdir $(ROOT)\release\$Version + copy /Y firstvoices.msi $(ROOT)\release\$Version\firstvoices.msi + copy /Y firstvoices.exe $(ROOT)\release\$Version\firstvoices-$VersionWithTag.exe prepareredist: rem prepareredist @@ -20,5 +20,5 @@ clean: candle-desktop: $(WIXHEAT) dir ..\xml -o desktopui.wxs -ag -cg DesktopUI -dr INSTALLDIR -suid -var var.DESKTOPUISOURCE -wx -nologo - $(WIXCANDLE) -dOEMNAME="$(OEMNAME)" -dPRODUCTNAME="$(PRODUCTNAME)" -dROOT="$(ROOT)" -dVERSION=$VERSION -dRELEASE=$RELEASE -dPRODUCTID=$GUID1 -dDESKTOPUISOURCE=..\xml firstvoices.wxs desktopui.wxs + $(WIXCANDLE) -dOEMNAME="$(OEMNAME)" -dPRODUCTNAME="$(PRODUCTNAME)" -dROOT="$(ROOT)" -dVERSION=$VersionWin -dRELEASE=$RELEASE -dPRODUCTID=$GUID1 -dDESKTOPUISOURCE=..\xml firstvoices.wxs desktopui.wxs diff --git a/windows/src/buildtools/inst/copydebug.in b/windows/src/buildtools/inst/copydebug.in index 4a8380375f..4f7cb7e761 100644 --- a/windows/src/buildtools/inst/copydebug.in +++ b/windows/src/buildtools/inst/copydebug.in @@ -7,36 +7,36 @@ SIGNCODE_BUILD=1 !include ..\..\Defines.mak copydebug: - -mkdir $(ROOT)\release\$VERSION + -mkdir $(ROOT)\release\$Version echo mkdir c:\kmsymbols > $(ROOT)\src\install.bat - echo mkdir c:\kmsymbols\$VERSION >> $(ROOT)\src\install.bat - echo copy *.tds c:\kmsymbols\$VERSION >> $(ROOT)\src\install.bat - echo copy *.dbg c:\kmsymbols\$VERSION >> $(ROOT)\src\install.bat - echo copy *.pdb c:\kmsymbols\$VERSION >> $(ROOT)\src\install.bat + echo mkdir c:\kmsymbols\$Version >> $(ROOT)\src\install.bat + echo copy *.tds c:\kmsymbols\$Version >> $(ROOT)\src\install.bat + echo copy *.dbg c:\kmsymbols\$Version >> $(ROOT)\src\install.bat + echo copy *.pdb c:\kmsymbols\$Version >> $(ROOT)\src\install.bat echo regedit /s tds.reg >> $(ROOT)\src\install.bat $(WZZIP) $(ROOT)\src\tds.zip $(ROOT)\src\install.bat $(ROOT)\src\buildtools\inst\tds.reg rem Disabling symsrv upload from the build agents (2018-06-19 mcdurdin) - # "C:\Program Files (x86)\Windows Kits\8.0\Debuggers\x86\symstore" add /r /f $(ROOT)\debug\*.* /s c:\Tavultesoft\Debug\Symbols /t "Keyman" /v "Build $VERSION" /c "Release $VERSION" - # "C:\Program Files (x86)\Windows Kits\8.0\Debuggers\x86\symstore" add /r /f $(ROOT)\bin\*.* /s c:\Tavultesoft\Debug\Symbols /t "Keyman" /v "Build $VERSION" /c "Release $VERSION" + # "C:\Program Files (x86)\Windows Kits\8.0\Debuggers\x86\symstore" add /r /f $(ROOT)\debug\*.* /s c:\Tavultesoft\Debug\Symbols /t "Keyman" /v "Build $Version" /c "Release $Version" + # "C:\Program Files (x86)\Windows Kits\8.0\Debuggers\x86\symstore" add /r /f $(ROOT)\bin\*.* /s c:\Tavultesoft\Debug\Symbols /t "Keyman" /v "Build $Version" /c "Release $Version" # ping localhost # delay for a few seconds # $(WZSE) $(ROOT)\src\tds.zip -setup -t $(ROOT)\src\buildtools\inst\tds_dialog.txt -c .\install.bat - copy $(ROOT)\src\tds.zip $(ROOT)\release\$VERSION\tds-$VERSION.zip + copy $(ROOT)\src\tds.zip $(ROOT)\release\$Version\tds-$Version.zip -del $(ROOT)\src\tds.zip del $(ROOT)\src\install.bat # wait 1 second -- gives winzip time to finish # ping -n 2 127.0.0.1 - # copy $(ROOT)\src\tds.exe $(ROOT)\release\$VERSION\tds-$VERSION.exe + # copy $(ROOT)\src\tds.exe $(ROOT)\release\$Version\tds-$Version.exe cd $(BUILD) - $(WZZIP) -r $(ROOT)\release\$VERSION\debug-$VERSION.zip *.zip + $(WZZIP) -r $(ROOT)\release\$Version\debug-$Version.zip *.zip uploadsymbols: rem Disabling symsrv upload from the build agents (2018-06-19 mcdurdin) - # "C:\Program Files (x86)\Windows Kits\8.0\Debuggers\x86\symstore" add /r /f $(ROOT)\debug\*.* /s c:\Tavultesoft\Debug\Symbols /t "Keyman" /v "Build $VERSION" /c "Release $VERSION" - # "C:\Program Files (x86)\Windows Kits\8.0\Debuggers\x86\symstore" add /r /f $(ROOT)\bin\*.* /s c:\Tavultesoft\Debug\Symbols /t "Keyman" /v "Build $VERSION" /c "Release $VERSION" + # "C:\Program Files (x86)\Windows Kits\8.0\Debuggers\x86\symstore" add /r /f $(ROOT)\debug\*.* /s c:\Tavultesoft\Debug\Symbols /t "Keyman" /v "Build $Version" /c "Release $Version" + # "C:\Program Files (x86)\Windows Kits\8.0\Debuggers\x86\symstore" add /r /f $(ROOT)\bin\*.* /s c:\Tavultesoft\Debug\Symbols /t "Keyman" /v "Build $Version" /c "Release $Version" diff --git a/windows/src/buildtools/inst/srcbackup.in b/windows/src/buildtools/inst/srcbackup.in index 01de6b8231..f957819f7d 100644 --- a/windows/src/buildtools/inst/srcbackup.in +++ b/windows/src/buildtools/inst/srcbackup.in @@ -5,6 +5,6 @@ !include ..\..\Defines.mak srcbackup: - -mkdir $(ROOT)\release\$VERSION + -mkdir $(ROOT)\release\$Version cd $(ROOT)\src - $(WZZIP) -r -x!*.ipch -x!*.sdf -x!*.db $(ROOT)\release\$VERSION\src-$VERSION.zip *.* + $(WZZIP) -r -x!*.ipch -x!*.sdf -x!*.db $(ROOT)\release\$Version\src-$Version.zip *.* diff --git a/windows/src/desktop/inst/download.in b/windows/src/desktop/inst/download.in index dcc2656dfd..53e7581983 100644 --- a/windows/src/desktop/inst/download.in +++ b/windows/src/desktop/inst/download.in @@ -12,10 +12,10 @@ default: echo Please don't call this file directly -- used by Makefile copyredist-desktop: - -mkdir $(ROOT)\release\$VERSION - copy /Y keymandesktop.msi $(ROOT)\release\$VERSION\keymandesktop.msi - copy /Y keymandesktop.exe $(ROOT)\release\$VERSION\keymandesktop-$VERSION.exe - copy /Y $(ROOT)\bin\desktop\setup.exe $(ROOT)\release\$VERSION\setup.exe + -mkdir $(ROOT)\release\$Version + copy /Y keymandesktop.msi $(ROOT)\release\$Version\keymandesktop.msi + copy /Y keymandesktop.exe $(ROOT)\release\$Version\keymandesktop-$VersionWithTag.exe + copy /Y $(ROOT)\bin\desktop\setup.exe $(ROOT)\release\$Version\setup.exe prepareredist: rem prepareredist @@ -31,7 +31,7 @@ candle: candle-desktop candle-cef candle-locale candle-desktop: $(WIXHEAT) dir ..\kmshell\xml -o desktopui.wxs -ag -cg DesktopUI -dr INSTALLDIR -suid -var var.DESKTOPUISOURCE -wx -nologo - $(WIXCANDLE) -dVERSION=$VERSION -dRELEASE=$RELEASE -dPRODUCTID=$GUID1 -dDESKTOPUISOURCE=..\kmshell\xml keymandesktop.wxs desktopui.wxs + $(WIXCANDLE) -dVERSION=$VersionWin -dRELEASE=$RELEASE -dPRODUCTID=$GUID1 -dDESKTOPUISOURCE=..\kmshell\xml keymandesktop.wxs desktopui.wxs # # Chromium Embedded Framework @@ -47,7 +47,7 @@ heat-cef: -rmdir /s/q $(KEYMAN_WIX_TEMP_CEF) candle-cef: heat-cef - $(WIXCANDLE) -dVERSION=$VERSION -dRELEASE=$RELEASE -dCefSourceDir=$(KEYMAN_CEF4DELPHI_ROOT) cef.wxs + $(WIXCANDLE) -dVERSION=$VersionWin -dRELEASE=$RELEASE -dCefSourceDir=$(KEYMAN_CEF4DELPHI_ROOT) cef.wxs # # Locale files @@ -56,4 +56,4 @@ candle-cef: heat-cef candle-locale: # locale files are in desktop/locale/* $(WIXHEAT) dir ..\kmshell\locale -o locale.wxs -ag -cg Locale -dr INSTALLDIR -var var.LOCALESOURCE -wx -nologo - $(WIXCANDLE) -dVERSION=$VERSION -dRELEASE=$RELEASE -dPRODUCTID=$GUID1 -dLOCALESOURCE=..\kmshell\locale locale.wxs + $(WIXCANDLE) -dVERSION=$VersionWin -dRELEASE=$RELEASE -dPRODUCTID=$GUID1 -dLOCALESOURCE=..\kmshell\locale locale.wxs diff --git a/windows/src/desktop/insthelp/manifest.in b/windows/src/desktop/insthelp/manifest.in index e43d6cb0c8..63d855f57e 100644 --- a/windows/src/desktop/insthelp/manifest.in +++ b/windows/src/desktop/insthelp/manifest.in @@ -3,7 +3,7 @@ Keyman Engine Installation Assistant diff --git a/windows/src/desktop/kmbrowserhost/manifest.in b/windows/src/desktop/kmbrowserhost/manifest.in index 3453c33d9a..4619ab9b98 100644 --- a/windows/src/desktop/kmbrowserhost/manifest.in +++ b/windows/src/desktop/kmbrowserhost/manifest.in @@ -1,6 +1,6 @@ - + Keyman Desktop Browser Host Process diff --git a/windows/src/desktop/kmshell/manifest.in b/windows/src/desktop/kmshell/manifest.in index d78c4d2e92..adb78d82c6 100644 --- a/windows/src/desktop/kmshell/manifest.in +++ b/windows/src/desktop/kmshell/manifest.in @@ -1,6 +1,6 @@ - + Keyman Desktop diff --git a/windows/src/desktop/setup/debug-manifest.in b/windows/src/desktop/setup/debug-manifest.in index e728e7a0e8..9a23a4f1b1 100644 --- a/windows/src/desktop/setup/debug-manifest.in +++ b/windows/src/desktop/setup/debug-manifest.in @@ -1,6 +1,6 @@ - + Keyman Desktop Setup diff --git a/windows/src/developer/TIKE/manifest.in b/windows/src/developer/TIKE/manifest.in index 84aef9f8c9..81e9234dec 100644 --- a/windows/src/developer/TIKE/manifest.in +++ b/windows/src/developer/TIKE/manifest.in @@ -1,6 +1,6 @@ - + Keyman Developer diff --git a/windows/src/developer/inst/copydev.in b/windows/src/developer/inst/copydev.in index ffb86c28eb..4bf38d4814 100644 --- a/windows/src/developer/inst/copydev.in +++ b/windows/src/developer/inst/copydev.in @@ -1,7 +1,7 @@ !include ..\..\Defines.mak ## -## In this file, $VERSION and $RELEASE will be replaced by mkver. These are not +## In this file, $Version, $VersionWin and $VersionRelease will be replaced by mkver. These are not ## Make variables, but mkver variables. ## @@ -22,19 +22,19 @@ KEYMAN_DEVELOPER_TEMPLATES_ROOT=$(ROOT)\src\developer\kmconvert\data KEYMAN_MODELCOMPILER_ROOT=$(KEYMAN_ROOT)\developer\js copykmdev: makeinstaller - -mkdir $(ROOT)\release\$VERSION - copy /Y $(ROOT)\src\developer\inst\keymandeveloper.msi $(ROOT)\release\$VERSION\keymandeveloper.msi - copy /Y $(ROOT)\src\developer\inst\keymandeveloper-$VERSION.exe $(ROOT)\release\$VERSION\keymandeveloper-$VERSION.exe + -mkdir $(ROOT)\release\$Version + copy /Y $(ROOT)\src\developer\inst\keymandeveloper.msi $(ROOT)\release\$Version\keymandeveloper.msi + copy /Y $(ROOT)\src\developer\inst\keymandeveloper-$VersionWithTag.exe $(ROOT)\release\$Version\keymandeveloper-$VersionWithTag.exe test-releaseexists: - if exist $(ROOT)\release\$VERSION\keymandeveloper*.msi echo. & echo Release $VERSION already exists. Delete it or update src\version.txt and try again & exit 1 + if exist $(ROOT)\release\$Version\keymandeveloper*.msi echo. & echo Release $Version already exists. Delete it or update src\version.txt and try again & exit 1 candle: heat-cef heat-xml heat-templates heat-model-compiler - $(WIXCANDLE) -dVERSION=$VERSION -dRELEASE=$RELEASE kmdev.wxs - $(WIXCANDLE) -dVERSION=$VERSION -dRELEASE=$RELEASE -dXmlSourceDir=$(ROOT)\src\developer\TIKE\xml xml.wxs - $(WIXCANDLE) -dVERSION=$VERSION -dRELEASE=$RELEASE -dCefSourceDir=$(KEYMAN_CEF4DELPHI_ROOT) cef.wxs - $(WIXCANDLE) -dVERSION=$VERSION -dRELEASE=$RELEASE -dTemplatesSourceDir=$(KEYMAN_DEVELOPER_TEMPLATES_ROOT) templates.wxs - $(WIXCANDLE) -dVERSION=$VERSION -dRELEASE=$RELEASE -dModelCompilerSourceDir=$(KEYMAN_WIX_TEMP_MODELCOMPILER) kmlmc.wxs + $(WIXCANDLE) -dVERSION=$VersionWin -dRELEASE=$VersionRelease kmdev.wxs + $(WIXCANDLE) -dVERSION=$VersionWin -dRELEASE=$VersionRelease -dXmlSourceDir=$(ROOT)\src\developer\TIKE\xml xml.wxs + $(WIXCANDLE) -dVERSION=$VersionWin -dRELEASE=$VersionRelease -dCefSourceDir=$(KEYMAN_CEF4DELPHI_ROOT) cef.wxs + $(WIXCANDLE) -dVERSION=$VersionWin -dRELEASE=$VersionRelease -dTemplatesSourceDir=$(KEYMAN_DEVELOPER_TEMPLATES_ROOT) templates.wxs + $(WIXCANDLE) -dVERSION=$VersionWin -dRELEASE=$VersionRelease -dModelCompilerSourceDir=$(KEYMAN_WIX_TEMP_MODELCOMPILER) kmlmc.wxs clean-heat: clean-heat-model-compiler @@ -141,9 +141,9 @@ clean-heat-model-compiler: makeinstaller: cd $(ROOT)\src\developer\inst echo [Setup] > setup.inf - echo Version=$VERSION >> setup.inf + echo Version=$Version >> setup.inf echo MSIFileName=keymandeveloper.msi >> setup.inf - echo Title=Keyman Developer $RELEASE >>setup.inf + echo Title=Keyman Developer $VersionRelease >>setup.inf $(WZZIP) setup.zip keymandeveloper.msi setup.inf - copy /b $(ROOT)\bin\developer\setup.exe + setup.zip keymandeveloper-$VERSION.exe - $(SIGNCODE) /d "Keyman Developer" keymandeveloper-$VERSION.exe + copy /b $(ROOT)\bin\developer\setup.exe + setup.zip keymandeveloper-$VersionWithTag.exe + $(SIGNCODE) /d "Keyman Developer" keymandeveloper-$VersionWithTag.exe diff --git a/windows/src/developer/kmcomp/manifest.in b/windows/src/developer/kmcomp/manifest.in index cc8354af8a..7123001713 100644 --- a/windows/src/developer/kmcomp/manifest.in +++ b/windows/src/developer/kmcomp/manifest.in @@ -1,6 +1,6 @@ - + Keyman Developer Command Line Compiler diff --git a/windows/src/developer/kmconvert/manifest.in b/windows/src/developer/kmconvert/manifest.in index 1a16ded596..5d9c732293 100644 --- a/windows/src/developer/kmconvert/manifest.in +++ b/windows/src/developer/kmconvert/manifest.in @@ -1,6 +1,6 @@ - + Keyman Developer Conversion Utility diff --git a/windows/src/developer/setup/manifest.in b/windows/src/developer/setup/manifest.in index 528a612937..8fbd06dcd4 100644 --- a/windows/src/developer/setup/manifest.in +++ b/windows/src/developer/setup/manifest.in @@ -1,6 +1,6 @@ - + Keyman Desktop Setup diff --git a/windows/src/engine/inst/download.in b/windows/src/engine/inst/download.in index 7de5f73386..c995bc0af7 100644 --- a/windows/src/engine/inst/download.in +++ b/windows/src/engine/inst/download.in @@ -8,8 +8,8 @@ default: echo Please don't call this file directly -- used by Makefile copyredist: - -mkdir $(ROOT)\release\$VERSION - copy /Y $(ROOT)\src\engine\inst\keymanengine.msm $(ROOT)\release\$VERSION\keymanengine-$VERSION.msm + -mkdir $(ROOT)\release\$Version + copy /Y $(ROOT)\src\engine\inst\keymanengine.msm $(ROOT)\release\$Version\keymanengine-$VersionWithTag.msm prepareredist: rem @@ -18,4 +18,4 @@ clean: rem candle: - $(WIXCANDLE) -dVERSION=$VERSION -dRELEASE=$RELEASE -ext WixUtilExtension keymanengine.wxs components.wxs + $(WIXCANDLE) -dVERSION=$VersionWin -dRELEASE=$VersionRelease -ext WixUtilExtension keymanengine.wxs components.wxs diff --git a/windows/src/engine/keyman/manifest.in b/windows/src/engine/keyman/manifest.in index fc2b794113..63b5df1925 100644 --- a/windows/src/engine/keyman/manifest.in +++ b/windows/src/engine/keyman/manifest.in @@ -1,6 +1,6 @@ - + Keyman Engine diff --git a/windows/src/engine/keymanx64/manifest.in b/windows/src/engine/keymanx64/manifest.in index 25e19871ed..3aea02d2fc 100644 --- a/windows/src/engine/keymanx64/manifest.in +++ b/windows/src/engine/keymanx64/manifest.in @@ -1,6 +1,6 @@ - + Keyman Engine x64 diff --git a/windows/src/engine/kmcomapi/manifest.in b/windows/src/engine/kmcomapi/manifest.in index 131617a0ce..6e2606cbce 100644 --- a/windows/src/engine/kmcomapi/manifest.in +++ b/windows/src/engine/kmcomapi/manifest.in @@ -1,6 +1,6 @@ - + Keyman Engine API diff --git a/windows/src/engine/mcompile/manifest.in b/windows/src/engine/mcompile/manifest.in index 6f1b2419db..a891c20d67 100644 --- a/windows/src/engine/mcompile/manifest.in +++ b/windows/src/engine/mcompile/manifest.in @@ -1,6 +1,6 @@ - + Keyman Engine x64 diff --git a/windows/src/engine/tsysinfo/manifest.in b/windows/src/engine/tsysinfo/manifest.in index a9462ce786..b9e49cfdf8 100644 --- a/windows/src/engine/tsysinfo/manifest.in +++ b/windows/src/engine/tsysinfo/manifest.in @@ -1,6 +1,6 @@ - + Keyman Engine Diagnostics diff --git a/windows/src/engine/tsysinfox64/manifest.in b/windows/src/engine/tsysinfox64/manifest.in index 71059c79a3..a18341264e 100644 --- a/windows/src/engine/tsysinfox64/manifest.in +++ b/windows/src/engine/tsysinfox64/manifest.in @@ -1,6 +1,6 @@ - + Keyman Engine Diagnostics x64 diff --git a/windows/src/global/help/version.in b/windows/src/global/help/version.in index 00448a7c47..beb14e7ab8 100644 --- a/windows/src/global/help/version.in +++ b/windows/src/global/help/version.in @@ -1,5 +1,5 @@ diff --git a/windows/src/support/kmkb0045/manifest.in b/windows/src/support/kmkb0045/manifest.in index 678f04dc09..5c3f4b2c0d 100644 --- a/windows/src/support/kmkb0045/manifest.in +++ b/windows/src/support/kmkb0045/manifest.in @@ -5,7 +5,7 @@ Tavultesoft KMKB0045 From cb579bd1d1225bf39ad4e68710350a7acf1bcc30 Mon Sep 17 00:00:00 2001 From: Marc Durdin Date: Thu, 8 Oct 2020 09:23:54 +1100 Subject: [PATCH 24/31] chore(windows): update RELEASE tags as well --- oem/firstvoices/windows/src/inst/download.in | 2 +- oem/firstvoices/windows/src/localedef.dtd.in | 2 +- windows/src/desktop/help/install.in | 4 ++-- windows/src/desktop/inst/download.in | 6 +++--- windows/src/desktop/kmshell/localedef.dtd.in | 2 +- 5 files changed, 8 insertions(+), 8 deletions(-) diff --git a/oem/firstvoices/windows/src/inst/download.in b/oem/firstvoices/windows/src/inst/download.in index d4a7d42117..6e39ee0851 100644 --- a/oem/firstvoices/windows/src/inst/download.in +++ b/oem/firstvoices/windows/src/inst/download.in @@ -20,5 +20,5 @@ clean: candle-desktop: $(WIXHEAT) dir ..\xml -o desktopui.wxs -ag -cg DesktopUI -dr INSTALLDIR -suid -var var.DESKTOPUISOURCE -wx -nologo - $(WIXCANDLE) -dOEMNAME="$(OEMNAME)" -dPRODUCTNAME="$(PRODUCTNAME)" -dROOT="$(ROOT)" -dVERSION=$VersionWin -dRELEASE=$RELEASE -dPRODUCTID=$GUID1 -dDESKTOPUISOURCE=..\xml firstvoices.wxs desktopui.wxs + $(WIXCANDLE) -dOEMNAME="$(OEMNAME)" -dPRODUCTNAME="$(PRODUCTNAME)" -dROOT="$(ROOT)" -dVERSION=$VersionWin -dRELEASE=$VersionRelease -dPRODUCTID=$GUID1 -dDESKTOPUISOURCE=..\xml firstvoices.wxs desktopui.wxs diff --git a/oem/firstvoices/windows/src/localedef.dtd.in b/oem/firstvoices/windows/src/localedef.dtd.in index c3e0484ada..4d5acac59a 100644 --- a/oem/firstvoices/windows/src/localedef.dtd.in +++ b/oem/firstvoices/windows/src/localedef.dtd.in @@ -1,7 +1,7 @@ - + diff --git a/windows/src/desktop/help/install.in b/windows/src/desktop/help/install.in index 050ebe3173..92d833bcf9 100644 --- a/windows/src/desktop/help/install.in +++ b/windows/src/desktop/help/install.in @@ -6,5 +6,5 @@ install: if not exist $(KEYMAN_SITE_ROOT)\help.keyman.com\products\desktop exit 1 - -rd /s/q $(KEYMAN_SITE_ROOT)\help.keyman.com\products\desktop\$RELEASE\docs - xcopy /s/q/y $(ROOT)\bin\help\php\desktop\* $(KEYMAN_SITE_ROOT)\help.keyman.com\products\desktop\$RELEASE\docs\ # + -rd /s/q $(KEYMAN_SITE_ROOT)\help.keyman.com\products\desktop\$VersionRelease\docs + xcopy /s/q/y $(ROOT)\bin\help\php\desktop\* $(KEYMAN_SITE_ROOT)\help.keyman.com\products\desktop\$VersionRelease\docs\ # diff --git a/windows/src/desktop/inst/download.in b/windows/src/desktop/inst/download.in index 53e7581983..51fbaec8f2 100644 --- a/windows/src/desktop/inst/download.in +++ b/windows/src/desktop/inst/download.in @@ -31,7 +31,7 @@ candle: candle-desktop candle-cef candle-locale candle-desktop: $(WIXHEAT) dir ..\kmshell\xml -o desktopui.wxs -ag -cg DesktopUI -dr INSTALLDIR -suid -var var.DESKTOPUISOURCE -wx -nologo - $(WIXCANDLE) -dVERSION=$VersionWin -dRELEASE=$RELEASE -dPRODUCTID=$GUID1 -dDESKTOPUISOURCE=..\kmshell\xml keymandesktop.wxs desktopui.wxs + $(WIXCANDLE) -dVERSION=$VersionWin -dRELEASE=$VersionRelease -dPRODUCTID=$GUID1 -dDESKTOPUISOURCE=..\kmshell\xml keymandesktop.wxs desktopui.wxs # # Chromium Embedded Framework @@ -47,7 +47,7 @@ heat-cef: -rmdir /s/q $(KEYMAN_WIX_TEMP_CEF) candle-cef: heat-cef - $(WIXCANDLE) -dVERSION=$VersionWin -dRELEASE=$RELEASE -dCefSourceDir=$(KEYMAN_CEF4DELPHI_ROOT) cef.wxs + $(WIXCANDLE) -dVERSION=$VersionWin -dRELEASE=$VersionRelease -dCefSourceDir=$(KEYMAN_CEF4DELPHI_ROOT) cef.wxs # # Locale files @@ -56,4 +56,4 @@ candle-cef: heat-cef candle-locale: # locale files are in desktop/locale/* $(WIXHEAT) dir ..\kmshell\locale -o locale.wxs -ag -cg Locale -dr INSTALLDIR -var var.LOCALESOURCE -wx -nologo - $(WIXCANDLE) -dVERSION=$VersionWin -dRELEASE=$RELEASE -dPRODUCTID=$GUID1 -dLOCALESOURCE=..\kmshell\locale locale.wxs + $(WIXCANDLE) -dVERSION=$VersionWin -dRELEASE=$VersionRelease -dPRODUCTID=$GUID1 -dLOCALESOURCE=..\kmshell\locale locale.wxs diff --git a/windows/src/desktop/kmshell/localedef.dtd.in b/windows/src/desktop/kmshell/localedef.dtd.in index 71fe3566fb..573883bdb5 100644 --- a/windows/src/desktop/kmshell/localedef.dtd.in +++ b/windows/src/desktop/kmshell/localedef.dtd.in @@ -1,7 +1,7 @@ - + From 4e18f9a531f85d31bf0d4055a88f2b4323f08f57 Mon Sep 17 00:00:00 2001 From: Marc Durdin Date: Thu, 8 Oct 2020 13:34:37 +1100 Subject: [PATCH 25/31] chore: address review comments --- windows/src/developer/inst/copydev.in | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/windows/src/developer/inst/copydev.in b/windows/src/developer/inst/copydev.in index 4bf38d4814..e7e3fc522e 100644 --- a/windows/src/developer/inst/copydev.in +++ b/windows/src/developer/inst/copydev.in @@ -1,7 +1,7 @@ !include ..\..\Defines.mak ## -## In this file, $Version, $VersionWin and $VersionRelease will be replaced by mkver. These are not +## In this file, $Version, $VersionWin, $VersionRelease and $VersionWithTag will be replaced by mkver. These are not ## Make variables, but mkver variables. ## From 80db5484323e8c63c4303fab8f630c2201fb3895 Mon Sep 17 00:00:00 2001 From: Marc Durdin Date: Thu, 8 Oct 2020 13:35:33 +1100 Subject: [PATCH 26/31] chore: address review comments --- windows/src/developer/inst/copydev.in | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/windows/src/developer/inst/copydev.in b/windows/src/developer/inst/copydev.in index e7e3fc522e..8eeb344702 100644 --- a/windows/src/developer/inst/copydev.in +++ b/windows/src/developer/inst/copydev.in @@ -27,7 +27,7 @@ copykmdev: makeinstaller copy /Y $(ROOT)\src\developer\inst\keymandeveloper-$VersionWithTag.exe $(ROOT)\release\$Version\keymandeveloper-$VersionWithTag.exe test-releaseexists: - if exist $(ROOT)\release\$Version\keymandeveloper*.msi echo. & echo Release $Version already exists. Delete it or update src\version.txt and try again & exit 1 + if exist $(ROOT)\release\$Version\keymandeveloper*.msi echo. & echo Release $Version already exists. Delete it or update VERSION.md and try again & exit 1 candle: heat-cef heat-xml heat-templates heat-model-compiler $(WIXCANDLE) -dVERSION=$VersionWin -dRELEASE=$VersionRelease kmdev.wxs From facf94df264c66375ef83b7e2a505c199e88ec2b Mon Sep 17 00:00:00 2001 From: Marc Durdin Date: Thu, 8 Oct 2020 13:59:16 +1100 Subject: [PATCH 27/31] chore: address review comments --- windows/src/desktop/setup/manifest.in | 2 +- windows/src/engine/keyman/debug-manifest.in | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/windows/src/desktop/setup/manifest.in b/windows/src/desktop/setup/manifest.in index 05dac87a5e..0c23e6a31d 100644 --- a/windows/src/desktop/setup/manifest.in +++ b/windows/src/desktop/setup/manifest.in @@ -1,6 +1,6 @@ - + Keyman Desktop Setup diff --git a/windows/src/engine/keyman/debug-manifest.in b/windows/src/engine/keyman/debug-manifest.in index c6e6ff8b6e..30cd649514 100644 --- a/windows/src/engine/keyman/debug-manifest.in +++ b/windows/src/engine/keyman/debug-manifest.in @@ -1,6 +1,6 @@ - + Keyman Engine From c42eed62359060dff179c82eba1c7de81b648524 Mon Sep 17 00:00:00 2001 From: Marc Durdin Date: Thu, 8 Oct 2020 14:25:14 +1100 Subject: [PATCH 28/31] chore: address review comments --- windows/src/developer/setup/manifest.in | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/windows/src/developer/setup/manifest.in b/windows/src/developer/setup/manifest.in index 8fbd06dcd4..64716356fb 100644 --- a/windows/src/developer/setup/manifest.in +++ b/windows/src/developer/setup/manifest.in @@ -1,6 +1,6 @@ - + Keyman Desktop Setup From 3c32267a5060fcd7357eab2827b1eae7d14ca077 Mon Sep 17 00:00:00 2001 From: Marc Durdin Date: Thu, 8 Oct 2020 14:59:59 +1100 Subject: [PATCH 29/31] chore: don't add tag to version in filenames While it might be nice to add the tag to versions in filenames, this creates a lot of work on the website where we make some filename assumptions. So, this PR winds that detail of filename changes back, and renames copydev.in to download.in to make it consistent with the other download.in files. --- .gitignore | 1 + oem/firstvoices/windows/src/inst/download.in | 2 +- windows/src/desktop/inst/download.in | 2 +- windows/src/developer/inst/Makefile | 14 +++++++------- .../src/developer/inst/{copydev.in => download.in} | 8 ++++---- windows/src/engine/inst/download.in | 2 +- 6 files changed, 15 insertions(+), 14 deletions(-) rename windows/src/developer/inst/{copydev.in => download.in} (96%) diff --git a/.gitignore b/.gitignore index 7d3fd45792..e4385c1fc6 100644 --- a/.gitignore +++ b/.gitignore @@ -120,6 +120,7 @@ # /developer/inst/ /windows/src/developer/inst/*.wixpdb +/windows/src/developer/inst/download.mak /windows/src/developer/inst/copydev.mak # /developer/kmcmpdll/ diff --git a/oem/firstvoices/windows/src/inst/download.in b/oem/firstvoices/windows/src/inst/download.in index 6e39ee0851..f31c2fe3c4 100644 --- a/oem/firstvoices/windows/src/inst/download.in +++ b/oem/firstvoices/windows/src/inst/download.in @@ -10,7 +10,7 @@ default: copyredist-desktop: -mkdir $(ROOT)\release\$Version copy /Y firstvoices.msi $(ROOT)\release\$Version\firstvoices.msi - copy /Y firstvoices.exe $(ROOT)\release\$Version\firstvoices-$VersionWithTag.exe + copy /Y firstvoices.exe $(ROOT)\release\$Version\firstvoices-$Version.exe prepareredist: rem prepareredist diff --git a/windows/src/desktop/inst/download.in b/windows/src/desktop/inst/download.in index 51fbaec8f2..6b8ff11d21 100644 --- a/windows/src/desktop/inst/download.in +++ b/windows/src/desktop/inst/download.in @@ -14,7 +14,7 @@ default: copyredist-desktop: -mkdir $(ROOT)\release\$Version copy /Y keymandesktop.msi $(ROOT)\release\$Version\keymandesktop.msi - copy /Y keymandesktop.exe $(ROOT)\release\$Version\keymandesktop-$VersionWithTag.exe + copy /Y keymandesktop.exe $(ROOT)\release\$Version\keymandesktop-$Version.exe copy /Y $(ROOT)\bin\desktop\setup.exe $(ROOT)\release\$Version\setup.exe prepareredist: diff --git a/windows/src/developer/inst/Makefile b/windows/src/developer/inst/Makefile index 33e8c70d24..4b4a84dcca 100644 --- a/windows/src/developer/inst/Makefile +++ b/windows/src/developer/inst/Makefile @@ -15,15 +15,15 @@ setup: # cd $(ROOT)\src\developer\inst - $(MKVER_U) copydev.in copydev.mak + $(MKVER_U) download.in download.mak # # Build the installation archive # - $(MAKE) -fcopydev.mak candle + $(MAKE) -fdownload.mak candle $(WIXLIGHT) -sice:ICE91 -sice:ICE60 -dWixUILicenseRtf=License.rtf -out keymandeveloper.msi -ext WixUIExtension $(DEVELOPER_FILES) - $(MAKE) -fcopydev.mak clean-heat + $(MAKE) -fdownload.mak clean-heat # # Sign the installation archive @@ -36,7 +36,7 @@ setup: # cd $(ROOT)\src\developer\inst - $(MAKE) -fcopydev.mak + $(MAKE) -fdownload.mak build: @rem @@ -49,7 +49,7 @@ backup: clean: cd $(ROOT)\src\developer\inst - -del /Q copydev.mak + -del /Q download.mak -del /Q *.msi -del /Q *.msp -del /Q *.wixobj @@ -66,9 +66,9 @@ clean: test-releaseexists: cd $(ROOT)\src\developer\inst - $(MKVER_U) copydev.in copydev.mak + $(MKVER_U) download.in download.mak - $(MAKE) -fcopydev.mak test-releaseexists + $(MAKE) -fdownload.mak test-releaseexists install: @rem diff --git a/windows/src/developer/inst/copydev.in b/windows/src/developer/inst/download.in similarity index 96% rename from windows/src/developer/inst/copydev.in rename to windows/src/developer/inst/download.in index 8eeb344702..926b3ff7b2 100644 --- a/windows/src/developer/inst/copydev.in +++ b/windows/src/developer/inst/download.in @@ -1,7 +1,7 @@ !include ..\..\Defines.mak ## -## In this file, $Version, $VersionWin, $VersionRelease and $VersionWithTag will be replaced by mkver. These are not +## In this file, $Version, $VersionWin, $VersionRelease and $Version will be replaced by mkver. These are not ## Make variables, but mkver variables. ## @@ -24,7 +24,7 @@ KEYMAN_MODELCOMPILER_ROOT=$(KEYMAN_ROOT)\developer\js copykmdev: makeinstaller -mkdir $(ROOT)\release\$Version copy /Y $(ROOT)\src\developer\inst\keymandeveloper.msi $(ROOT)\release\$Version\keymandeveloper.msi - copy /Y $(ROOT)\src\developer\inst\keymandeveloper-$VersionWithTag.exe $(ROOT)\release\$Version\keymandeveloper-$VersionWithTag.exe + copy /Y $(ROOT)\src\developer\inst\keymandeveloper-$Version.exe $(ROOT)\release\$Version\keymandeveloper-$Version.exe test-releaseexists: if exist $(ROOT)\release\$Version\keymandeveloper*.msi echo. & echo Release $Version already exists. Delete it or update VERSION.md and try again & exit 1 @@ -145,5 +145,5 @@ makeinstaller: echo MSIFileName=keymandeveloper.msi >> setup.inf echo Title=Keyman Developer $VersionRelease >>setup.inf $(WZZIP) setup.zip keymandeveloper.msi setup.inf - copy /b $(ROOT)\bin\developer\setup.exe + setup.zip keymandeveloper-$VersionWithTag.exe - $(SIGNCODE) /d "Keyman Developer" keymandeveloper-$VersionWithTag.exe + copy /b $(ROOT)\bin\developer\setup.exe + setup.zip keymandeveloper-$Version.exe + $(SIGNCODE) /d "Keyman Developer" keymandeveloper-$Version.exe diff --git a/windows/src/engine/inst/download.in b/windows/src/engine/inst/download.in index c995bc0af7..7c4da0b5a1 100644 --- a/windows/src/engine/inst/download.in +++ b/windows/src/engine/inst/download.in @@ -9,7 +9,7 @@ default: copyredist: -mkdir $(ROOT)\release\$Version - copy /Y $(ROOT)\src\engine\inst\keymanengine.msm $(ROOT)\release\$Version\keymanengine-$VersionWithTag.msm + copy /Y $(ROOT)\src\engine\inst\keymanengine.msm $(ROOT)\release\$Version\keymanengine-$Version.msm prepareredist: rem From 47adfac4f696f89aa926dbda96b4ddd5530d4225 Mon Sep 17 00:00:00 2001 From: Marc Durdin Date: Thu, 8 Oct 2020 15:21:35 +1100 Subject: [PATCH 30/31] chore: address review comments --- windows/src/developer/inst/download.in | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/windows/src/developer/inst/download.in b/windows/src/developer/inst/download.in index 926b3ff7b2..5b99e09053 100644 --- a/windows/src/developer/inst/download.in +++ b/windows/src/developer/inst/download.in @@ -1,7 +1,7 @@ !include ..\..\Defines.mak ## -## In this file, $Version, $VersionWin, $VersionRelease and $Version will be replaced by mkver. These are not +## In this file, $Version, $VersionWin, and $VersionRelease will be replaced by mkver. These are not ## Make variables, but mkver variables. ## From 4192e68db3c40bbe6f7d3d0776a1d1d5370cc5b4 Mon Sep 17 00:00:00 2001 From: Keyman Build Agent Date: Thu, 8 Oct 2020 01:54:49 -0400 Subject: [PATCH 31/31] auto: increment master version to 14.0.157 --- HISTORY.md | 10 ++++++++++ VERSION.md | 2 +- .../web/input-processor/package-lock.json | 2 +- common/core/web/input-processor/package.json | 14 ++++++------- .../web/keyboard-processor/package-lock.json | 2 +- .../core/web/keyboard-processor/package.json | 10 +++++----- .../core/web/tools/recorder/package-lock.json | 2 +- common/core/web/tools/recorder/package.json | 10 +++++----- .../tools/sentry-manager/package-lock.json | 2 +- .../web/tools/sentry-manager/package.json | 4 ++-- common/core/web/utils/package-lock.json | 2 +- common/core/web/utils/package.json | 6 +++--- common/models/templates/package-lock.json | 2 +- common/models/templates/package.json | 8 ++++---- common/models/types/package-lock.json | 2 +- common/models/types/package.json | 2 +- common/models/wordbreakers/package-lock.json | 2 +- common/models/wordbreakers/package.json | 4 ++-- common/predictive-text/package-lock.json | 2 +- common/predictive-text/package.json | 14 ++++++------- developer/js/package-lock.json | 2 +- developer/js/package.json | 8 ++++---- lerna.json | 2 +- resources/gosh/package-lock.json | 2 +- resources/gosh/package.json | 2 +- resources/web-environment/package-lock.json | 2 +- resources/web-environment/package.json | 4 ++-- web/package-lock.json | 2 +- web/package.json | 20 +++++++++---------- 29 files changed, 78 insertions(+), 68 deletions(-) diff --git a/HISTORY.md b/HISTORY.md index ef6d3e9071..1970f14ea8 100644 --- a/HISTORY.md +++ b/HISTORY.md @@ -1,5 +1,15 @@ # Keyman Version History +## 14.0.156 alpha 2020-10-08 + +* chore(windows): Move to Windows SDK 10.0.17763.0 (#3654) +* fix(windows): Some registry keys could have incorrect permissions 🍒 (#3668) +* fix(developer): ci uses repo tier and version (#3670) +* fix(windows): update CI for publishing desktop help (#3671) +* fix(web): ci uses repo tier and version (#3672) +* fix(windows): improve version numbers (#3678) +* chore: don't add tag to version in filenames (#3681) + ## 14.0.155 alpha 2020-10-07 * refactor(common/models): centralizes suggestion & keep inits (#3645) diff --git a/VERSION.md b/VERSION.md index a5d1732ed2..ca335d8991 100644 --- a/VERSION.md +++ b/VERSION.md @@ -1 +1 @@ -14.0.156 \ No newline at end of file +14.0.157 \ No newline at end of file diff --git a/common/core/web/input-processor/package-lock.json b/common/core/web/input-processor/package-lock.json index 6ffd8d2d40..705191f41f 100644 --- a/common/core/web/input-processor/package-lock.json +++ b/common/core/web/input-processor/package-lock.json @@ -1,6 +1,6 @@ { "name": "@keymanapp/input-processor", - "version": "14.0.156", + "version": "14.0.157", "lockfileVersion": 1, "requires": true, "dependencies": { diff --git a/common/core/web/input-processor/package.json b/common/core/web/input-processor/package.json index 896a0cf615..d966cbd549 100644 --- a/common/core/web/input-processor/package.json +++ b/common/core/web/input-processor/package.json @@ -1,6 +1,6 @@ { "name": "@keymanapp/input-processor", - "version": "14.0.156", + "version": "14.0.157", "description": "The core text and prediction processing engine for KeymanWeb", "repository": { "type": "git", @@ -18,7 +18,7 @@ }, "homepage": "https://github.com/keymanapp/keyman#readme", "devDependencies": { - "@keymanapp/resources-gosh": "^14.0.156", + "@keymanapp/resources-gosh": "^14.0.157", "chai": "^4.2.0", "mocha": "^5.2.0", "typescript": "^3.8.3" @@ -29,11 +29,11 @@ "test": "gosh ./unit_tests/test.sh" }, "dependencies": { - "@keymanapp/keyboard-processor": "^14.0.156", - "@keymanapp/lexical-model-layer": "^14.0.156", - "@keymanapp/models-types": "^14.0.156", - "@keymanapp/web-environment": "^14.0.156", - "@keymanapp/web-utils": "^14.0.156", + "@keymanapp/keyboard-processor": "^14.0.157", + "@keymanapp/lexical-model-layer": "^14.0.157", + "@keymanapp/models-types": "^14.0.157", + "@keymanapp/web-environment": "^14.0.157", + "@keymanapp/web-utils": "^14.0.157", "@types/node": "^11.9.4", "eventemitter3": "^4.0.0", "ts-node": "^8.0.2" diff --git a/common/core/web/keyboard-processor/package-lock.json b/common/core/web/keyboard-processor/package-lock.json index 6550bc6268..e5c2402504 100644 --- a/common/core/web/keyboard-processor/package-lock.json +++ b/common/core/web/keyboard-processor/package-lock.json @@ -1,6 +1,6 @@ { "name": "@keymanapp/keyboard-processor", - "version": "14.0.156", + "version": "14.0.157", "lockfileVersion": 1, "requires": true, "dependencies": { diff --git a/common/core/web/keyboard-processor/package.json b/common/core/web/keyboard-processor/package.json index 81feb7113a..8e9a1bbf61 100644 --- a/common/core/web/keyboard-processor/package.json +++ b/common/core/web/keyboard-processor/package.json @@ -1,6 +1,6 @@ { "name": "@keymanapp/keyboard-processor", - "version": "14.0.156", + "version": "14.0.157", "description": "Core module for Keyman keyboard support in KeymanWeb.", "repository": { "type": "git", @@ -18,7 +18,7 @@ }, "homepage": "https://github.com/keymanapp/keyman#readme", "devDependencies": { - "@keymanapp/resources-gosh": "^14.0.156", + "@keymanapp/resources-gosh": "^14.0.157", "chai": "^4.2.0", "mocha": "^5.2.0", "mocha-teamcity-reporter": "^3.0.0", @@ -31,9 +31,9 @@ "mocha": "mocha" }, "dependencies": { - "@keymanapp/models-types": "^14.0.156", - "@keymanapp/web-environment": "^14.0.156", - "@keymanapp/web-utils": "^14.0.156", + "@keymanapp/models-types": "^14.0.157", + "@keymanapp/web-environment": "^14.0.157", + "@keymanapp/web-utils": "^14.0.157", "@types/node": "^11.9.4", "ts-node": "^8.0.2" } diff --git a/common/core/web/tools/recorder/package-lock.json b/common/core/web/tools/recorder/package-lock.json index 3947e2d29e..d8d851ed31 100644 --- a/common/core/web/tools/recorder/package-lock.json +++ b/common/core/web/tools/recorder/package-lock.json @@ -1,6 +1,6 @@ { "name": "@keymanapp/recorder-core", - "version": "14.0.156", + "version": "14.0.157", "lockfileVersion": 1, "requires": true, "dependencies": { diff --git a/common/core/web/tools/recorder/package.json b/common/core/web/tools/recorder/package.json index 1d3335406a..77dc5d1cae 100644 --- a/common/core/web/tools/recorder/package.json +++ b/common/core/web/tools/recorder/package.json @@ -1,6 +1,6 @@ { "name": "@keymanapp/recorder-core", - "version": "14.0.156", + "version": "14.0.157", "description": "Core classes used to develop KeymanWeb test cases based on keystrokes", "main": "index.js", "scripts": { @@ -17,10 +17,10 @@ }, "homepage": "https://github.com/keymanapp/keyman#readme", "dependencies": { - "@keymanapp/keyboard-processor": "^14.0.156", - "@keymanapp/models-types": "^14.0.156", - "@keymanapp/web-environment": "^14.0.156", - "@keymanapp/web-utils": "^14.0.156" + "@keymanapp/keyboard-processor": "^14.0.157", + "@keymanapp/models-types": "^14.0.157", + "@keymanapp/web-environment": "^14.0.157", + "@keymanapp/web-utils": "^14.0.157" }, "devDependencies": { "typescript": "^3.8.3" diff --git a/common/core/web/tools/sentry-manager/package-lock.json b/common/core/web/tools/sentry-manager/package-lock.json index 7a02d7e6ab..d96b0c7428 100644 --- a/common/core/web/tools/sentry-manager/package-lock.json +++ b/common/core/web/tools/sentry-manager/package-lock.json @@ -1,6 +1,6 @@ { "name": "@keymanapp/web-sentry-manager", - "version": "14.0.156", + "version": "14.0.157", "lockfileVersion": 1, "requires": true, "dependencies": { diff --git a/common/core/web/tools/sentry-manager/package.json b/common/core/web/tools/sentry-manager/package.json index 74346f5f2a..4e06689ad2 100644 --- a/common/core/web/tools/sentry-manager/package.json +++ b/common/core/web/tools/sentry-manager/package.json @@ -1,6 +1,6 @@ { "name": "@keymanapp/web-sentry-manager", - "version": "14.0.156", + "version": "14.0.157", "description": "Common setup for KeymanWeb's Sentry-based error reporting", "main": "dist/index.js", "scripts": { @@ -20,7 +20,7 @@ "typescript": "^3.8.3" }, "dependencies": { - "@keymanapp/web-environment": "^14.0.156", + "@keymanapp/web-environment": "^14.0.157", "@sentry/browser": "^5.15.5" } } diff --git a/common/core/web/utils/package-lock.json b/common/core/web/utils/package-lock.json index 6b8e77c70a..35bb0e76f3 100644 --- a/common/core/web/utils/package-lock.json +++ b/common/core/web/utils/package-lock.json @@ -1,6 +1,6 @@ { "name": "@keymanapp/web-utils", - "version": "14.0.156", + "version": "14.0.157", "lockfileVersion": 1, "requires": true, "dependencies": { diff --git a/common/core/web/utils/package.json b/common/core/web/utils/package.json index 933f00b2bc..4998cbd420 100644 --- a/common/core/web/utils/package.json +++ b/common/core/web/utils/package.json @@ -1,6 +1,6 @@ { "name": "@keymanapp/web-utils", - "version": "14.0.156", + "version": "14.0.157", "description": "Common utility functions used throughout other Keyman packages", "main": "./dist/index.js", "types": "./dist/index.d.ts", @@ -20,8 +20,8 @@ }, "homepage": "https://github.com/keymanapp/keyman#readme", "devDependencies": { - "@keymanapp/resources-gosh": "^14.0.156", - "@keymanapp/web-environment": "^14.0.156", + "@keymanapp/resources-gosh": "^14.0.157", + "@keymanapp/web-environment": "^14.0.157", "@types/node": "^14.0.5", "typescript": "^3.8.3" } diff --git a/common/models/templates/package-lock.json b/common/models/templates/package-lock.json index ea84f30bad..a90c0e9228 100644 --- a/common/models/templates/package-lock.json +++ b/common/models/templates/package-lock.json @@ -1,6 +1,6 @@ { "name": "@keymanapp/models-templates", - "version": "14.0.156", + "version": "14.0.157", "lockfileVersion": 1, "requires": true, "dependencies": { diff --git a/common/models/templates/package.json b/common/models/templates/package.json index e29cdc3da9..036326c344 100644 --- a/common/models/templates/package.json +++ b/common/models/templates/package.json @@ -1,6 +1,6 @@ { "name": "@keymanapp/models-templates", - "version": "14.0.156", + "version": "14.0.157", "description": "Backing model implementations (templates) for Keyman's modelling layer", "keywords": [ "lm", @@ -42,8 +42,8 @@ "url": "https://github.com/keymanapp/keyman/issues" }, "devDependencies": { - "@keymanapp/models-types": "^14.0.156", - "@keymanapp/web-utils": "^14.0.156", + "@keymanapp/models-types": "^14.0.157", + "@keymanapp/web-utils": "^14.0.157", "@types/chai": "^4.2.11", "@types/mocha": "^7.0.2", "@types/node": "^14.0.4", @@ -52,6 +52,6 @@ "typescript": "^3.8.3" }, "dependencies": { - "@keymanapp/models-wordbreakers": "^14.0.156" + "@keymanapp/models-wordbreakers": "^14.0.157" } } diff --git a/common/models/types/package-lock.json b/common/models/types/package-lock.json index b149bf767d..c9ba5db511 100644 --- a/common/models/types/package-lock.json +++ b/common/models/types/package-lock.json @@ -1,6 +1,6 @@ { "name": "@keymanapp/models-types", - "version": "14.0.156", + "version": "14.0.157", "lockfileVersion": 1, "requires": true, "dependencies": { diff --git a/common/models/types/package.json b/common/models/types/package.json index 9c9d0370f6..354ff22cd4 100644 --- a/common/models/types/package.json +++ b/common/models/types/package.json @@ -1,6 +1,6 @@ { "name": "@keymanapp/models-types", - "version": "14.0.156", + "version": "14.0.157", "description": "Type definitions in used in the modeling (lexical model/predictive text) component of Keyman.", "types": "./index.d.ts", "scripts": { diff --git a/common/models/wordbreakers/package-lock.json b/common/models/wordbreakers/package-lock.json index 16b0eb4cf2..d108de3f18 100644 --- a/common/models/wordbreakers/package-lock.json +++ b/common/models/wordbreakers/package-lock.json @@ -1,6 +1,6 @@ { "name": "@keymanapp/models-wordbreakers", - "version": "14.0.156", + "version": "14.0.157", "lockfileVersion": 1, "requires": true, "dependencies": { diff --git a/common/models/wordbreakers/package.json b/common/models/wordbreakers/package.json index 57e9963beb..dc87adc104 100644 --- a/common/models/wordbreakers/package.json +++ b/common/models/wordbreakers/package.json @@ -1,6 +1,6 @@ { "name": "@keymanapp/models-wordbreakers", - "version": "14.0.156", + "version": "14.0.157", "description": "Word breakers bundled in the modeling layer", "keywords": [ "lexical model", @@ -40,7 +40,7 @@ "url": "https://github.com/keymanapp/keyman/issues" }, "devDependencies": { - "@keymanapp/models-types": "^14.0.156", + "@keymanapp/models-types": "^14.0.157", "@types/chai": "^4.2.11", "@types/mocha": "^7.0.2", "chai": "^4.2.0", diff --git a/common/predictive-text/package-lock.json b/common/predictive-text/package-lock.json index 850e736cc0..0cda5388a4 100644 --- a/common/predictive-text/package-lock.json +++ b/common/predictive-text/package-lock.json @@ -1,6 +1,6 @@ { "name": "@keymanapp/lexical-model-layer", - "version": "14.0.156", + "version": "14.0.157", "lockfileVersion": 1, "requires": true, "dependencies": { diff --git a/common/predictive-text/package.json b/common/predictive-text/package.json index 431be8551e..e1dbb86a78 100644 --- a/common/predictive-text/package.json +++ b/common/predictive-text/package.json @@ -1,6 +1,6 @@ { "name": "@keymanapp/lexical-model-layer", - "version": "14.0.156", + "version": "14.0.157", "description": "Keyman/Predictive Text integration layer", "main": "build/index.js", "scripts": { @@ -21,8 +21,8 @@ }, "homepage": "https://github.com/keymanapp/keyman#readme", "devDependencies": { - "@keymanapp/models-types": "^14.0.156", - "@keymanapp/resources-gosh": "^14.0.156", + "@keymanapp/models-types": "^14.0.157", + "@keymanapp/resources-gosh": "^14.0.157", "@types/node": "^10.17.21", "chai": "^4.2.0", "karma": "^4.2.0", @@ -46,10 +46,10 @@ "typescript": "^3.8.3" }, "dependencies": { - "@keymanapp/models-templates": "^14.0.156", - "@keymanapp/models-wordbreakers": "^14.0.156", - "@keymanapp/web-environment": "^14.0.156", - "@keymanapp/web-utils": "^14.0.156", + "@keymanapp/models-templates": "^14.0.157", + "@keymanapp/models-wordbreakers": "^14.0.157", + "@keymanapp/web-environment": "^14.0.157", + "@keymanapp/web-utils": "^14.0.157", "es6-shim": "^0.35.5", "string.prototype.codepointat": "^0.2.1", "string.prototype.startswith": "^0.2.0" diff --git a/developer/js/package-lock.json b/developer/js/package-lock.json index 30fdcd0be5..396be7a9ed 100644 --- a/developer/js/package-lock.json +++ b/developer/js/package-lock.json @@ -1,6 +1,6 @@ { "name": "@keymanapp/lexical-model-compiler", - "version": "14.0.156", + "version": "14.0.157", "lockfileVersion": 1, "requires": true, "dependencies": { diff --git a/developer/js/package.json b/developer/js/package.json index f5008b4486..ba840d7e8f 100644 --- a/developer/js/package.json +++ b/developer/js/package.json @@ -1,6 +1,6 @@ { "name": "@keymanapp/lexical-model-compiler", - "version": "14.0.156", + "version": "14.0.157", "description": "Keyman Developer lexical model compiler", "keywords": [ "keyboard", @@ -37,14 +37,14 @@ "node": ">=12.0.0" }, "dependencies": { - "@keymanapp/models-types": "^14.0.156", + "@keymanapp/models-types": "^14.0.157", "commander": "^3.0.0", "typescript": "^3.8.3", "xml2js": "^0.4.19" }, "devDependencies": { - "@keymanapp/models-templates": "^14.0.156", - "@keymanapp/models-wordbreakers": "^14.0.156", + "@keymanapp/models-templates": "^14.0.157", + "@keymanapp/models-wordbreakers": "^14.0.157", "@types/chai": "^4.1.7", "@types/mocha": "^5.2.7", "@types/node": "^10.14.6", diff --git a/lerna.json b/lerna.json index a4e5a3f8bd..60a419d7dc 100644 --- a/lerna.json +++ b/lerna.json @@ -16,5 +16,5 @@ "lerna", "typescript" ], - "version": "14.0.156" + "version": "14.0.157" } diff --git a/resources/gosh/package-lock.json b/resources/gosh/package-lock.json index bf460be5c7..856bd91481 100644 --- a/resources/gosh/package-lock.json +++ b/resources/gosh/package-lock.json @@ -1,5 +1,5 @@ { "name": "@keymanapp/resources-gosh", - "version": "14.0.156", + "version": "14.0.157", "lockfileVersion": 1 } diff --git a/resources/gosh/package.json b/resources/gosh/package.json index 749725a4ad..cf1a851b77 100644 --- a/resources/gosh/package.json +++ b/resources/gosh/package.json @@ -1,6 +1,6 @@ { "name": "@keymanapp/resources-gosh", - "version": "14.0.156", + "version": "14.0.157", "description": "Good Ol' Shell", "author": "Marc Durdin (https://github.com/mcdurdin)", "contributors": [ diff --git a/resources/web-environment/package-lock.json b/resources/web-environment/package-lock.json index eab4d51f10..4daaa39a65 100644 --- a/resources/web-environment/package-lock.json +++ b/resources/web-environment/package-lock.json @@ -1,5 +1,5 @@ { "name": "@keymanapp/web-environment", - "version": "14.0.156", + "version": "14.0.157", "lockfileVersion": 1 } diff --git a/resources/web-environment/package.json b/resources/web-environment/package.json index 6017b5c4db..189b9ef859 100644 --- a/resources/web-environment/package.json +++ b/resources/web-environment/package.json @@ -1,6 +1,6 @@ { "name": "@keymanapp/web-environment", - "version": "14.0.156", + "version": "14.0.157", "description": "A compilation utility for passing select environment variables into our TS builds", "author": "Joshua Horton (https://github.com/jahorton)", "homepage": "https://github.com/keymanapp/keyman", @@ -17,6 +17,6 @@ "url": "https://github.com/keymanapp/keyman/issues" }, "devDependencies": { - "@keymanapp/resources-gosh": "^14.0.156" + "@keymanapp/resources-gosh": "^14.0.157" } } diff --git a/web/package-lock.json b/web/package-lock.json index 3381ff339b..6c16f8e701 100644 --- a/web/package-lock.json +++ b/web/package-lock.json @@ -1,6 +1,6 @@ { "name": "keyman", - "version": "14.0.156", + "version": "14.0.157", "lockfileVersion": 1, "requires": true, "dependencies": { diff --git a/web/package.json b/web/package.json index 0add3c9b7b..b1b238fcd0 100644 --- a/web/package.json +++ b/web/package.json @@ -1,6 +1,6 @@ { "name": "keyman", - "version": "14.0.156", + "version": "14.0.157", "description": "Facilitates text input in any language.", "repository": { "type": "git", @@ -18,8 +18,8 @@ }, "homepage": "https://github.com/keymanapp/keyman#readme", "devDependencies": { - "@keymanapp/resources-gosh": "^14.0.156", - "@keymanapp/web-sentry-manager": "^14.0.156", + "@keymanapp/resources-gosh": "^14.0.157", + "@keymanapp/web-sentry-manager": "^14.0.157", "@sentry/cli": "^1.52.3", "chai": "^4.2.0", "google-closure-compiler-java": "^20200224.0.0", @@ -52,13 +52,13 @@ "sentry-cli": "sentry-cli" }, "dependencies": { - "@keymanapp/input-processor": "^14.0.156", - "@keymanapp/keyboard-processor": "^14.0.156", - "@keymanapp/lexical-model-layer": "^14.0.156", - "@keymanapp/models-types": "^14.0.156", - "@keymanapp/recorder-core": "^14.0.156", - "@keymanapp/web-environment": "^14.0.156", - "@keymanapp/web-utils": "^14.0.156", + "@keymanapp/input-processor": "^14.0.157", + "@keymanapp/keyboard-processor": "^14.0.157", + "@keymanapp/lexical-model-layer": "^14.0.157", + "@keymanapp/models-types": "^14.0.157", + "@keymanapp/recorder-core": "^14.0.157", + "@keymanapp/web-environment": "^14.0.157", + "@keymanapp/web-utils": "^14.0.157", "@types/node": "^11.9.4", "es6-shim": "^0.35.5", "eventemitter3": "^4.0.0",