Releases: mmig/mmir-v4-starter-kit
release version 2.4
##################
Version 2.4
##################
- implemented pre-compilation for templates (eHTML)
- completed implementation for storing & loading compiled template files
- added pre-compilation code for template-parsing task (in ANT parse.xml)
- added mechanism for loading pre-compiled templates
- configuration for enabling/disabling usage of pre-compiled files
- included up-to-date check (using MD5-checksums) to verify that compiled templates are up-to-date
- grammars:
- added English example grammar (from/used in smart-case example)
- example Japanese dictionary and (minimal) grammar
- test page for semantic-interpreter: FIX in language-selection menu (dropdown box): select currently set language on page-load (before: first entry in the list was selected)
- CommonUtils:
- BUGFIX create instance with new (avoid var-leaking into global namespace)
- updated network-checking code (to reflect/use current Cordova-implementation)
- ControllerManager: refactored info-object creation (for preparing controller-/view-loading)
- BUGFIX load input-manager asynchronously
- BUGFIX prevent default-click behavior in DEFAULT-BUTTON-HANDLER (see vclick handling in executeAfterEachPageIsLoaded())
- cordovaAudioOutput
- removed some commments
- BUGFIX for implementation of isPaused() function
- slightly modified stop() implementation
- removed unnecessary/obsolete callback-id-list mechanism
- FIX: remove onCanPlay listener after first invocation
- FIXED/IMPROVED status-dependent functions (stop() etc);
- NOTE intialization only works error-free in combinaiton with modification in Cordova resources so that on-init event for media/audio is correctly fired in case of async-preparation
- FIX included private field for audio status in order to avoid Exceptions in stop() function
- Cordova (MODIFIACATION for 2.8.1 JAR)
- added listeners in Audio impl. in order to avoid ERROR output (for normal/regular behavior) to LogCat
- BUGFIX in onPreparation() in case of async preparation: only signal MEDIA_STARTING if the current state is lower (e.g. do nothing if already playing)
- FIX for media/audio initialization: in case of async-preparation now INIT-callback is triggered when prepared-listener is invoked (not directly when async-preparation is started as before)
- html5AudioOutput
- remove console debug output
- FIX / WORKAROUND for stop/replay: in case audio does not support timeranges (dependent on server), audio is reloaded, since we cannot reset currentTime to 0
- BUGFIX need this-reference for removing listener in audio-object
- BUGFIX for initialization listener (should only be called once)
- maryTextToSpeech
- BUGFIX trigger onEnd-callback in tts-function if cancel-function is called (i.e. notify ending of TTS)
- FIX set onEnd-callback to null, after calling (avoiding possible, multiple calls to same callback)
- FIX apply encodeURIComponents() to text/sentence before sending to MARY (instead of just encoding space chars)
- webkitAudioInput
- BUGFIX for recognize() implementation
- BUGFIX need to reset variable aborted, otherwise recognition assumes abortion on every listener-callback, if abort/cancel has been invoked once before
- BUGFIX only restart asr if no speech is detected.
- BUGFIX for BUG in case of more than one instance running, ASR would get stuck in an infinite loop
- Notification
- BUGFIX for callback triggering (avoid null-pointer exceptions)
- DISABLED releasing resources on pause (in order to be able to play notification sounds as long as app is only paused and not exited yet)
- added & implemented optional parameter isKeepOnPause for creating notifications sounds (only relevant for ANDROID): if set, sounds are not released when APP pauses
- added initSound() function (for avoiding double-triggering sound upon first playing, e.g. BEEP feedback after starting/resuming APP)
- REFACTORED private method for getting audio-object from internal cache
- removed language-specific functionality from ConfigurationManager (set to @deprecated: instead the LanguageManager should be used directly)
- modified ANT tasks to use integrated SCXML-JS for compiling dialog- and input-engine
- buil-properties/-settings:
- removed properties in build-setting files and ANT script that were required for previous solution (i.e. usage of external SCXML-JS)
- added/extended comments and added example for referencing nodejs in standard MacOS-environment
##################
Version 2.3
##################
- notification: added stopSound() function
- Templating (ehtml): added stringify() function for template representation objects
- Controllers/PresentationManager: added optional callback before_page_load()
- env/media:
- added new Audio Input Module webkitAudioInput.js
- some BUGFIXes for audio output modules (html5 and cordova)
- updated recorder.js/recorderWorker.js
- FIX for hmtl5AudioInput.js in new Chrome version (> 30.x.x): due to performance problems (-> "stutter" in encoded WAV audio) integrated silenceDetection into audio-input module (recorder/recorderWorker)
- added VolumeControl plugin (ANDROID): control Android's volume setting and store/restore volume setting on leaving/entering the APP
- added textarea to login view, and ctrl code for speech input (for TESTING speech input; DISABLED by default)
- (changed default configuration for HTML5-speech-input's WebSocket to default port of new service-implementation)
- added UNICODE support for grammars (UNICODE characters need to be masked within grammar code, since JS/CC cannot handle these!)
- TODO remove obsolete UMLAUTs handling
- improved handling of SEMANTIC object in grammar, in case TOKENS / UTTERANCES are referenced multiple times within a phrase
- BUGFIX handling empty stopword list in grammar definitions (JSON)
- BUGFIX for testSemanticInterpreter.html:
- initialize with controls with correct default-language
- remove languages where no grammar is available, from drop-down list
- improved testSemanticInterpreter.html
- improved layout, added descriptions
- added mask/unmask option for JSON values (-> for non-ASCI unicode chars)
- added check / detailed error message for invalid JSON grammars
- using json-lint
- added check / detail message for build.xml
- added check / detail message for testSemanticInterpreter.html
release v2.2
##################
Version 2.2
##################
- added transitions (animations) for views: now jQuery Mobile page transitions can be used in render(..., {transition: 'jqm transition name', reverse: [true|false]})
- default transition now set in PresentationManager (to: 'none'), instead of in main.js::afterLoadingControllers()
- added example dialogDescriptionSCXML.xml that uses transitions
- BUGFIX for template (.ehtml) parser: avoid false-negative error-messages (i.e. reported errors that are not errors)
- re-factored build.xml: renaming of targets/variables for SemanticInterpreter/Parser (to GrammarParser / -Generator)
- "normalized" Controller interface:
- added getLayout function (and corresponding property)
- added getLayoutName function
- renamed: getViews to getViewNames
- added: getViews [returns a list of the view info/JSON objects]
- renamed: getPartials to getPartialNames
- added: getPartials [returns a list of the partial info/JSON objects]
- added ANT file parser.xml for parsing template files (*.ehtml): layouts, views, partials (as listed in directories.json)
- renamed JavaScript files for ANT build tasks:
- InitForAntRhinoScriptEnv.js -> InitRhinoEnv.js
- AntScriptFileHandler.js -> AntFileHandler.js
- InitForAntNodeJsScriptEnv.js -> InitNodeJsEnv.js
- InitForAntDefaultScriptEnv.js -> InitAntDefaultEnv.js
- updated HTML test page for grammar generation/testing (for new multi-language support of grammars)
- some updates in user-guide.pdf
release v2.1
version notes for MMIG Starter Kit (v 2.1)
-
using Cordova 2.8.x library
-
using jQuery 1.9.x library
-
using jQuery Mobile 1.3.x library
Change Log
##################
Version 2.1
################## -
ModelManger:
- API change: now use create(callback) before first usage (instead of getInstance(callback))
- API change: removed getModels() [RETURNS: Array]; replaced with getModelNames() [RETURNS: Array]
-
API change:
- naming convetion for models: now names for model files must be analogous to controller files:
- model class name must correspond to file name (except for first letter: file name may be lower case (or upper case); the class name's first letter MUST be upper case)
- model classes must be specified within namespace mobileDS, e.g. model "CalendarModel": mobileDS.CalendarModel = ...
- naming convetion for models: now names for model files must be analogous to controller files:
-
multi-language support for speech grammars (incl. automated loading)
-
generic loadImpl() function in CommonUtils for loading/executing JavaScript implementation files (with serial / paralell loading modes)
-
updated res/xml/config.xml to new Cordova format
-
modified event-handling in InputEngine/DialogEngine: changed from touch_end_on_XXX to click_on_XXX
-
build.settings / build.properties: moved several propeties into build.properties
-
added targets to build.xml
- clean (extended version: now removes all generated files)
- build (compile all necessary files, i.e. compile grammars, update directories.json file etc.)
- doc (generate HTML documentation for framework code; WINDOWS only)
- targets for compiling all available grammar.json files
##################
Version 2.0TODO (changes that may effect application specific code)
-
build.settings: update your build.settings file (see updated version of build.settingsDefault)
-
mobileDS.AudioInput and mobileDS.AudioOutput are now merged into mobileDS.MediaManager
-
renamed assets/www/javascripts/ to assets/www/mmirf/ (MMIR Framework)
-
renamed parsed_directories.json: directories.json
-
moved application specific JS-files into assets/www/appStarterKit/
- suggested file structure: application specific code should be placed into assets/www/app[ application name ]/...
-
changed behavior for file-/class-/view-names:
- names will now ALWAYS be treated case-sensitive & corresponding to the file-name, with the exception
- controllers: the controller-class must have the same name as the controller's file
- EXCEPTION if the first character of the file-name is lower-case, the controller-class (and if exists the controller-helper-class) name must be (in difference to the file-name) begin with upper-case
-> controller-class-names must ALWAYS start with an upper-case character (regardless of the controller's file name) - e.g. for getLayout(controllerName): use getLayout("Application") instead of getLayout("application") even if controller file-name is application.js
(NOTE: the first character of file-names for layouts is treated case-insensitive analog to controller-file-names: regardless of the layout's file-name,
references must always use upper-case for the first character as in the example above)
- EXCEPTION if the first character of the file-name is lower-case, the controller-class (and if exists the controller-helper-class) name must be (in difference to the file-name) begin with upper-case
- partials: partial file-names always start with the character "
"; however, when refering to partials (e.g. @render('Application','languageMenu')) the "" SHOULD be omitted - see also comments for PresentationManager
- NOTE: do not forget to update directories.json (default target in build.xml) after adding, removing, or renaming files
-
restructured 3rd party JS files, libraries etc.:
- resources (JS-files, CSS-files, images, sounds etc) required by the framework itself are now located in mmirf/res/ (in the corresponding sub-directories)
- application specific JS-files are now located in assets/www/libs/
- other application specific resources are located in assets/www/content/ as before
-
InputManager renamed to InputEngine
- initializeDialog: startEngine
- raiseEvent: raise
- changed API: now InputEngine must be created ( mobileDS.InputEngine.create( callback ) ), before it can be used (or its instance be accessed)
-
DialogEngine: renamed functions
- show_dialog: showDialog
- close_current_dialog: hideCurrentDialog
- show_wait_dialog:
- close_wait_dialog:
- get_on_page_loaded: getOnPageRenderedHandler
- set_on_page_loaded: setOnPageRenderedHandler
- perform_helper_method: performHelper
- raiseEvent: raise
- initializeDialog: startEngine
- changed API: now DialogEngine must be created ( mobileDS.DialogEngine.create( callback ) ), before it can be used (or its instance be accessed)
-
renamed functions in SemanticInterpreter:
- get_asr_semantic: getASRSemantic
- get_asr_semantic_alt: getASRSemantic_alt
- removeStopwordsAlt: removeStopwords_alt
-
removed from global namespace
- asr_semantic_annotation
- asr_recognized_text
-> instead use: var asr_recognized_text = mobileDS.SemanticInterpreter.getInstance().getASRSemantic(asr_semantic_annotation);
-
"renamed" stem_word: mobileDS.SnowballSimple.stem
-
renamed in CommonUtils
- html_comment_regex: regexHTMLComment
- html_resize_font_to_fit_surrounding_box: resizeFitToSourroundingBox
- to_json_string_value: toJSONStringValue
- convert_to_json_value_HTML_string: convertJSONStringValueToHTML
- convert_json_to_HTML_string: convertJSONStringToHTML
- get_params_as_dict: parseParamsToDictionary
-
removed deprecated/un-used functions/properties in CommonUtils:
- log
- ehtml2Html
- appendJsSrcToHeader
- partial_name_regex
- partial_parameter_regex
- partial_var_pattern_assignment_regex
- partial_var_pattern_dataobject_regex
- partial_var_pattern_regex
- partial_var_pattern_simpleobject_regex
- render_partial_regex
- value_of_path_regex
- value_of_regex
- get_params_as_dict
- get_date_as_string
- get_duration_as_string
-> NOTE: these can be made re-available by calling setToCompatibilityMode() on the CommonUtils object
-
in LanguageManager removed deprecated function:
- translateHTML
- changeLanguage (this was/is an application specific function; a "copy" is available in controller/application.js)
- getCurrentLanguage (same as getLanguage)
- renamed:
- existsGrammarForLanguage: existsGrammar
- existsDictionaryForLanguage: existsDictionary
- existsSpeakerForLanguage: existsSpeaker
- cycleLanguages: setNextLanguage
-> NOTE: these can be made re-available by calling setToCompatibilityMode() on the LanguageManager object
-
in LanguageManager removed deprecated function:
- translateHTML
- changeLanguage (this was/is an application specific function; a "copy" is available in controller/application.js)
- getCurrentLanguage (same as getLanguage)
- renamed:
- existsGrammarForLanguage: existsGrammar
- existsDictionaryForLanguage: existsDictionary
- existsSpeakerForLanguage: existsSpeaker
- cycleLanguages: setNextLanguage
-> NOTE: these can be made re-available by calling setToCompatibilityMode() on the LanguageManager object
-
in ControllerManager renamed:
- performAction: perform
- performHelperAction: performHelper
- initializeControllers: create
- API change:
- removed getControllers() (RETURNS: Array); replaced by getControllerNames() (RETURNS: Array)
-
in View renamed:
(NOTE these changes are unlikely to effect application specific code)- performAction: perform
- performActionIfPresent: performIfPresent
-
in Helper renamed:
(NOTE these changes are unlikely to effect application specific code)- performAction: perform
-
mobileDS.constants:
- changed for interface:
- needs to initialized using mobileDS.constants.create(env-mode) (NOTE: backwards compatible, i.e. mobileDS.constants.getInstance(new-mode) can be used too)
- afterwards instance can be accessed with mobileDS.constants (i.e. no need for mobileDS.constants.getInstance())
- env-mode can be changed using mobileDS.constants.create(new-mode) or mobileDS.constants.getInstance(new-mode)
- NOTE: this change is backwards-compatible, i.e. can still be used with mobileDS.constants.getInstance(new-mode) as before
- renamed functions:
- getDictionaryFilename: getDictionaryFileName
- getSpeakerFilename: getSpeakerFileName
- getGrammarFilename: getGrammarFileName
- changed for interface:
-
PresentationManager
- removed un-used functions/properties: getVisualComponent, visualComponents
- renamed
- show_dialog: showDialog
- close_current_dialog: hideCurrentDialog
- render_view_successor: doRenderView
- rerenderView: reRenderView
- changed function API (signature):
- addView(view): addView(controllerName, view)
- getView(viewName): getView(controllerName, viewName)
- getPartial(partialName, controller): getPartial(controllerName, partialName)
-
renamed functions in GrammarConverter:
(NOTE these changes are unlikely to effect application specific code)- load_grammar: loadGrammar
- convert_json_grammar: convertJSONGrammar
- set_stop_words: setStopWords
- get_stop_words: getStopWords
- parse_stop_words: parseStopWords
- parse_stop_words_alt: parseStopWords_alt
- get_stop_words_regexp: getStopWordsRegExpr
- get_stop_words_regexp_alt: getStopWordsRegExpr_alt
- get_jscc_grammar: getJSCCGrammar
- get_js_grammar: getJSGrammar
- set_js_grammar: setJSGrammar
- parse_tokes: parseTokens
- parse_utterances: parseUtterances
- parse_utterance: doParseUtterance
- get_semantic_interpretationt_of_utterance: doCreateSemanticInterpretationForUtterance
- get_semantic_interpretationt_of_phrase: doCreateSemanticInterpretationForPhrase
- set_compile_grammar: setGrammarFunction
- compiled_grammar: executeGrammar
- (field) asr_semantic_annotation: semanticAnnotationResult
- index.html:
NOTE: new SCRIPT tag order requirement: "javascripts/gen/gram...
Change Information (changes that mostly concern internal framework code)
release for version 1.0
update to version 1.0 * several BUGFIXES * added support for Partial views * extended support for template expressions: - control structures: @if [@else], @for(;;), @for( in ) - partial view expression: @render - comments: @* *@ - "code execution" expressions: @(), @{ }@ * added message queue for SCION: now raising events from within SCION event-processing code is supported (i.e. from within BIG STEP in SCION) * added JSDoc generation for framework documentation
inital public release
v0.9 updated guides