Changelog, versions 1.x.x

This is the documentation for 3.3.1 version, which is not the latest version. Consider upgrading to 4.3.1.

[1.20.2] - 2020-11-19

Fixed

  • same as 1.20.1, but as Java version failed I need a new version number

[1.20.1] - 2020-11-19

Fixed

  • sonar warnings

[1.20.0] - 2020-11-13

Added

  • developer doc to add new languages

Changed

  • new organisation of language specific rules: per language classes vs switch/case everywhere, which will ease the addition of new languages

[1.19.0] - 2020-11-02

Added

  • Java version now supports ouputData

Fixed

  • updated Java version:

    • outdated dependencies update

    • updated JSON RosaeNLG package format, now same as node.js version (sources in src)

  • sonar alerts

[1.18.1] - 2020-10-31

Changed

  • github migration:

    • all project repositories moved to github, including documentation related subprojects (antora-ui, antora-playbook, docs-site, boilerplate): see RosaeNLG organization on Github

    • dictionary.zip storage for german-pos-dict instead of dictionary.dump, which was too large for github

    • github worklows generated using gulp workflows

  • docker registry moved from registry.gitlab.com to hub.docker.com for cli, node.js server images and java server images

[1.18.0] - 2020-10-23

Fixed

  • security update of dependencies

Changed

  • license change to Apache 2.0:

    • most original packages switch to Apache 2.0 license

    • packages derived from original Pug packages rosaenlg-pug-…​ remain under MIT

    • other packages that are forks from MIT packages remain under MIT as well: english-ordinals, rosaenlg-gender-es, rosaenlg-pluralize-es

  • documentation in separate module rosaenlg-doc

  • updated logo (font is Soft Elegance)

[1.17.2] - 2020-10-14

Added

  • code of conduct

Fixed

  • bug in browser version of rosaenlg-packager

[1.17.1] - 2020-09-25

Changed

  • dependencies update (quite a lot of them)

[1.17.0] - 2020-08-18

Added

  • getHasSaidCopy returns a copy of the hasSaid / recordSaid map as an object

  • in the API (lambda and node): added a outputData field so that specific computed data can be output by the API, and not only text

Changed

  • dependencies update

[1.16.10] - 2020-08-17

Added

  • ability to complete or override default words and adjective lists in all languages

Fixed

  • German dative definite article was wrong: denen instead of den

[1.16.9] - 2020-07-21

Added

  • ROSAENLG_SHARED_DIR on node API to put shared templates in a separate folder

[1.16.8] - 2020-07-20

Changed

  • fixes 1.16.7 for DEFAULT_USER

[1.16.7] - 2020-07-20

Added

  • in node API, when not using JWT, it is now possible to indicate which header contains the user

[1.16.6] - 2020-07-17

Added

  • thanks to HB feedback: in English, new key useTheWhenPlural to output the when definite article in plural: #[+value('machine', {det:'DEFINITE', number:'P', useTheWhenPlural: true})] will output the machines

Fixed

  • thanks to HB feedback: #[+subjectVerbAdj('machine', 'être', 'prêt', {det:'DEFINITE', number:'P'})] now produces les machines sont prêtes (instead of les machines est prêtes)

[1.16.5] - 2020-07-15

Added

  • JSON schema is now enforced on input for Lambda API

Fixed

  • stopword list was broken in the documentation

  • some errors in the swagger

  • larger timeout for lambda functions

[1.16.4] - 2020-07-06

Added

  • countries library, for English and French

[1.16.3] - 2020-07-04

Fixed

  • replaces 1.16.2 which had a little too much agressive contraction mechanism in French; always use 1.16.3 instead of 1.16.2.

[1.16.2] - 2020-07-04

Added

  • in rosaenlg-packager, expandPackagedTemplateJson will transform a JSON packaged project into plain separate files

  • in swagger, added custom generic field

Fixed

  • date contraction issues: de #[+value(new Date('1980-04-14'), {dateFormat:"MMMM"})] did output de avril instead of d’avril (in French)

Changed

  • security update of dependencies

[1.16.1] - 2020-06-24

Added

  • node API and Lambda API: ability to set a user who has shared templates, which can be rendered by anyone

    • see ROSAENLG_SHARED_USER for node version

    • see sharedUser configuration for Lambda

  • node API and Lambda API: render now also gives templateSha1 in the result

[1.16.0] - 2020-06-12

Added

  • on both node.js and Lambda API:

    • /templates/version to get the current RosaeNLG version deployed

    • accepts JWT token for authorisation

Fixed

  • in the prediction, corrected bug on empty element detection

  • Lambda API:

    • added x-rapidapi-proxy-secret and x-rapidapi-user in Access-Control-Allow-Headers for preflight CORS

    • now supports headers both in upper and lower case

  • node.js API: CORS support

Changed

  • on the node.js API, reload is removed; now just using /templates/{templateId} will always try to reload and give the last SHA1 in the response

  • on both node.js and Lambda API, /templates/{templateId} will now systematically read on backend (and not use cache)

[1.15.4] - 2020-05-29

Added

  • migration scripts in server-scripts folder

Changed

  • when rendering, in both node and lamba API: if the proper template/SHA1 is not in the cache but is found on backend, with a different SHA1: you now get a 308 redirect instead of an error (error was sha1 do not correspond, read sha1 is …​ while requested is …​)

[1.15.3] - 2020-05-16

Added

  • French: in revamped module french-contractions:

    • larger list of "H Aspiré" words

    • exceptions for other words: cet arbre vs ce yahourt, le iota vs l’iode

[1.15.2] - 2020-05-14

Fixed

  • clearer exception when value of something that is null or undefined

[1.15.1] - 2020-05-08

Added

  • numerous tags now accept lists parameters instead of a single element, and will choose one randomly; use that feature instead of an embedded syn_fct call:

    • agreeAdj and subjectVerbAdj now accept a list of adjectives

    • value accepts a list of elements as first parameter

    • verb, subjectVerb and subjectVerbAdj as well for the subject

    • verb, subjectVerb and subjectVerbAdj as well for the verb

  • noSubject flag on subjectVerb and subjectVerbAdj mixins to silent the subject

Fixed

  • verbs and adjectives are now properly extracted from subjectVerbAdj mixin, when embedding resources

  • there were sometimes inopportune ¤ in the html tags

  • there were spacing issues when parenthesis and quotes where mixed, like in bla ("bla") bla

[1.15.0] - 2020-05-05

Added

  • Spanish support: verbs, words (gender, plural), adjectives, determiners

  • SEP_BEFORE and SEP_AFTER to provide separators when multiple adjectives; is practical to override default, e.g. value('árbol', { det:'DEFINITE', adj:{BEFORE:['primero', 'grande'], SEP_BEFORE:''} }) will generate el primer gran árbol

Fixed

  • bug in BEFORE adjective list: value('homme', {det:'INDEFINITE', adj: { BEFORE:['vieux'] } }) now produces un vieil homme

  • bug in Lambda functions: forced embedded resources (in compile options) were ignored

  • bug in browser-ide-demo: JSON export was wrong (templateId in src and not a top level element)

  • bug in french-adjectives when adjective was placed before noun and plural: generated vieil alsaciens instead of vieux alsaciens

Changed

  • removed substantive mixin: use value instead with number param, see Value for Nominal Groups

  • english-ordinals is now a separate module

  • pluralize-fr removed from tiny runtime (automatically embeds a list of words with their plural instead)

  • french-adjectives is not embedded no more in tiny version (using lists instead)

  • doc organization for verb and value mixins

[1.14.3] - 2020-04-18

Changed

  • plugged to sonarqube, and thus some code style fixes

  • browser-ide-demo:

    • warning when load example while code has changed

    • auto render by default

[1.14.2] - 2020-04-11

Changed

  • browser-ide-demo

    • added sidebar

    • now based on a clean Vue project

[1.14.1] - 2020-04-06

Added

  • in browser-ide-demo, save to compiled JavaScript with export option

[1.14.0] - 2020-04-05

Fixed

  • fixed lambda create which did not save on S3 when the input already contained the compiled content

Changed

  • many changes in gulp-rosaenlg:

    • renamed to rosaenlg-packager

    • removed renderTemplateInFile whose added value was poor

    • packageTemplateJson changed to completePackagedTemplateJson, with a different signature

    • compileTemplates changed to compileTemplateToJsString, with a different signature

[1.13.0] - 2020-03-29

Added

Fixed

  • clearer exception and message when some raw js in the template is not properly compiled

Changed

  • gulp-rosaenlg now automatically includes all files to be included by reading the templates content

  • as a consequence, in the packageTemplateJson function:

    • folderWithTemplates is removed

    • entryTemplate must now also contain the path

[1.12.3] - 2020-03-27

Changed

  • dependencies update

  • removed sha1 external lib in favor of integrated crypto

[1.12.2] - 2020-03-18

Changed

  • dependencies update

[1.12.1] - 2020-03-16

Added

Fixed

  • rosaenlg-node-server issue in docker image

Changed

  • deprecated content-deduplicate and removed it from the repo

[1.12.0] - 2020-03-16

Added

  • (almost) ready to deploy Lambda functions for AWS

  • common content for rosaenlg-node-server and rosaenlg-lambda in separate package rosaenlg-server-toolkit

  • tested (successfully) on different Node.js versions, see here

Fixed

  • in pure rendering packages, essential libs were missing: numeral for all languages and french-adjectives for French, since 1.8.0

Changed

  • deprecated content-deduplicate

[1.11.0] - 2020-02-29

Added

  • bullet lists for itemz and eachz, see doc

  • dynamic assemblies depending on the real length of non empty elements, also see doc

Fixed

  • h1 h2 etc. were not considered as block level html elements

[1.10.2] - 2020-02-26

Added

  • (much) better Italian ordinal support (up to 1 millions) thanks to Marco Riva

  • in value, use agree for ORDINAL_TEXTUAL in it_IT to have prima and not primo

[1.10.1] - 2020-02-18

Fixed

  • rosaenlg-node-server: forgot to update docker tests

[1.10.0] - 2020-02-18

Added

  • getRosaeNlgVersion() returns the version of RosaeNLG

  • rosaenlg-node-server: pre compiled templates are now accepted; when uploaded, templates are compiled only once and saved

Fixed

  • rosaenlg-node-server: templates with include in subfolders had issues when importing

Changed

  • changed JSON packaging format, now separates src and comp fields

[1.9.2] - 2020-02-15

Fixed

  • was able to analyze browser packages thanks to rollup-plugin-analyzer: removed a lot of unuseful stuff (particularly for rendering only packages)

[1.9.1] - 2020-02-14

Fixed

  • big bug when choosebest was in an itemz structure; error message was choosebest cannot be imbricated

  • removed 2 patches thanks to n2words 1.3.2

[1.9.0] - 2020-02-10

Changed

  • more reliable a / an filtering in English: use of english-a-an and english-a-an-list instead of compromise in rosaenlg-filter

  • more reliable Englisn plurals: use of english-plurals and english-plurals-list instead of compromise

  • now using n2words for textual numbers in all languages, replacing written-number for French, write-int for German, compromise for English and italian-ordinals-cardinals for Italian textual

  • replaced compromise by n2words + custom code inspired by number-to-words for English ordinal numbers

  • completely removed compromise lib

[1.8.3] - 2020-02-06

Added

  • added rosaenlg-parallel-poc in the repo to ease maintenance

  • added rosaenlg-browser-poc in the repo to ease maintenance

[1.8.2] - 2020-02-05

Fixed

  • naming collisions on english-verbs on npm, renamed english-verbs-helper

[1.8.1] - 2020-02-05

Added

  • en_US:

    • for verbs, replaced comprise lib with english-verbs, english-verbs-irregular and english-verbs-gerunds

    • 12 standard tenses are now available: SIMPLE_PAST, SIMPLE_PRESENT, SIMPLE_FUTURE, PROGRESSIVE_PAST, PROGRESSIVE_PRESENT, PROGRESSIVE_FUTURE, PERFECT_PAST, PERFECT_PRESENT, PERFECT_FUTURE, PERFECT_PROGRESSIVE_PAST, PERFECT_PROGRESSIVE_PRESENT, PERFECT_PROGRESSIVE_FUTURE

[1.8.0] - 2020-02-02

Added

  • Italian and Other now available on browser IDE

Changed

  • use rollup.js to package (instead of browserify):

    • (somewhat) smaller packages: now around 250kb for rendering

    • (somewhat) faster build: build_the_code on CI used to last 26 minutes, now 18 minutes

  • removed rosaenlg-pug-filters: brought few features and many security issues

[1.7.1] - 2020-01-23

Added

  • package button in browser-ide

  • Rapid API documentation

  • mirror docker node.js server image on aws ecr

Fixed

  • rosaenlg-node-server will now return a 404 on render when the template exists but the sha1 is not good

Changed

  • dependancies update

[1.7.0] - 2020-01-20

Added

  • rosaenlg-node-server is now more ready to use on a cluster:

    • ROSAENLG_LAZY_STARTUP: env variable, if set it prevents loading saved templates at startup (they will be loaded when needed only)

    • ROSAENLG_FORGET_TEMPLATES: env variable, if set to true loaded templates will be forgotten after a while (and reloaded when needed)

Changed

  • rosaenlg-node-server: lots of changes in the API, especially sha1 of the template is required to render a template (you get the sha1 when you load the template)

[1.6.2] - 2020-01-12

Added

  • rosaenlg-node-server:

    • better structured JSON logs

    • logs using AWS CloudWatch; see doc for config

Changed

  • rosaenlg-node-server:

    • env variable AWS_ACCESS_KEY_ID becomes AWS_S3_ACCESS_KEY_ID

    • env variable AWS_SECRET_ACCESS_KEY becomes AWS_S3_SECRET_ACCESS_KEY

[1.6.1] - 2020-01-11

Fixed

  • do not use 1.6.0 as there was an issue in rosaenlg-node-server: winston must not be devDependancy

[1.6.0] - 2020-01-11

Added

  • rosaenlg-node-server:

    • S3 support for persistence

    • ability to put a user in the request, and have separate environments

    • /health path

    • time elapsed (performance) in the response and in the logging

    • static swagger published here

Fixed

  • rosaenlg-node-server:

    • more standard logging using winston

    • rewrote all sync to async

Changed

  • rosaenlg-node-server:

    • use get on /templates/:templateId instead of /templates/:templateId/template to get template content

    • reload all using /templates/reload is removed (reload individually each template, or just restart the server)

[1.5.8] - 2020-01-06

Fixed

  • rosaenlg-node-server: when using persistent templates, templates were not reloaded when server was restarted

Changed

[1.5.7] - 2020-01-05

Changed

  • removed snyk dependancy

[1.5.6] - 2019-12-14

1.5.5 was not a really good version - please favor 1.5.6 instead.

Fixed

  • quotes ("…​") are now properly managed in terms of spacing

Changed

  • removed filter mixin: everything is filtered by default; use protect mixin to protect sections you don’t want to filter

  • removed disableFiltering option

[1.5.5] - 2019-12-13

Added

  • in rosaenlg-node-server: ability to render a template directly, by sending the template and the data in the same request

Fixed

  • the "missing space" issue, which lead to add lines with just | or | #{''}, is fixed (which is indeed a very good thing)

Changed

  • §…​§ structure is deprecated: please use protect tag instead which better cares for spacing

  • in rosaenlg-node-server: removed counter in the response (didn’t work properly, and was not really interesting)

[1.5.4] - 2019-12-04

Added

  • new additional independant module content-deduplicate; it is not used by RosaeNLG while rendering texts but you can use it afterwards to assess the quality of your texts

Changed

  • in synonym global optimisation: html tags div p etc. are not considered no more as words; this can bring regressions on your projects, as synonyms are better chosen

  • French is better tokenized when there are apostrophes in the text

Fixed

  • dependancies update

[1.5.3] - 2019-11-24

Added

  • list of standard stop words in the documentation

  • Developer experience documentation

  • with CLI, templates can now be rendered in stdout (not systematically in a file)

  • compare with xSpin

  • examples of templates showing the added value of a Natural Language Generator compared to a plain template engine like Pug

Fixed

  • itemz and eachz can be used with parameters: default will be {}

Changed

  • rosaenlg-cli used to output in files by default; now by default it outputs in stdout; add --out=./ to output in files as before

[1.5.2] - 2019-11-18

Changed

  • docker images (command line interface and server) are not built through main CI and available here

  • browser-ide-demo is now a package of the project

[1.5.1] - 2019-11-16

Fixed

  • rosaenlg-node-server was not able to find openApiDocumentation_merged.json as path was not relative

[1.5.0] - 2019-11-16

Added

Changed

  • rosaengl-cli (the command line interface):

    • is now in the main repo

    • updated dependancies on rosaengl-cli

  • rosaengl-node-server (server based on RosaeNLG):

    • is now in the main repo

    • logs in rosaengl-node-server

Fixed

  • removed @types/random-js dependancy which made a warning

Changed

[1.4.1] - 2019-11-15

Added

  • NlgLib is now exposed. Useful when using compileFile (e.g. import {compileFile, NlgLib} from 'rosaenlg'),and mandatory for rosaenlg-node-server.

Changed

  • update of many dependancies

[1.4.0] - 2019-11-07

Changed

  • large reorganization of the documentation

Added

  • more doc on how to integrate, Java Wrapper, Java Server etc.

[1.3.3] - 2019-10-29

Fixed

  • #[+value('some string')] didn’t work no more

[1.3.2] - 2019-10-27

Added

  • in the browser files supporting compilation (\_comp.js), there was only the render function; added compile, compileFile, compileClient, compileFileClient, renderFile and an access to NlgLib

  • in gulp-rosaenlg, packageTemplateJson to bundle templates and included templates in a single Json file

Changed

  • removed 'fat js' version (was huge, long to produce & not really useful)

[1.3.1] - 2019-10-18

Fixed

  • fat js is still as fat but at least works now.

[1.3.0] - 2019-10-13

Added

  • fat js packaged version, with compilation ability on each language, to be used in GraalVM

[1.2.0] - 2019-10-12

Added

  • recordSaid hasSaid and deleteSaid existed to safely record booleans; now there is recordValue getValue and deleteValue to safely record numbers or strings

  • compare with CoreNLG in the documentation

[1.1.1] - 2019-10-09

Added

  • GraalVM runtime documentation

Fixed

  • Dev dependancies security issues thanks to Snyk

  • More French contractions (j’ai, lorsqu’il, puisqu’elle, jusqu’à etc.) thanks to CoreNLG source code

Changed

[1.1.0] - 2019-10-07

Added

  • new synonym mode once: will trigger each alternative randomly, but will try to trigger each one only once. Just use it instead of random!

[1.0.5] - 2019-09-29

Fixed

  • README.md is back for npmjs.com

  • in French, on browser package, composed tenses raised an error, because verbs that always take ETRE aux were not correctly packaged

[1.0.4] - 2019-09-29

Changed

  • reduced size on npm thanks to .npmignore

[1.0.3] - 2019-09-29

Added

  • when using subjectVerb in French, when aux is ETRE, the participle is automatically agreed with the subject

[1.0.2] - 2019-09-12

Fixed

  • 1.0.1 broke gulp-rosaenlg. Removed more deeply dependancy with uglify (which was used by Pug pre-RosaeNLG).

[1.0.1] - 2019-09-12

Fixed

  • Browser compilation was broken. Fix + added automated tests.

[1.0.0] - 2019-09-10

Added

  • search engine available in RosaeNLG doc thanks to Algolia DocSearch (awesome product and support btw)

Fixed

  • outdated packages (yarn outdated) replaced by newer version

Changed

  • 1.0.0 version at last!