- Revoke SDK token on logout this improves on the previous behaviour where logging out would only purge tokens locally.
- Add automatic SDK local settings restore on template reload
- Upgrade node-fetch dependency to avoid annoying deprecation warning. #91
- Fix bug with OR conditions for imported module settings
- Add support for OR conditions in
show_if
andhide_if
- Fixes the reporting of server errors by the CLI
- Allow SDK CLI token based authentication.
- This is purely a Node.js compatibility break; it’s a major version change, because the SDK is no longer compatible with old versions of Node.js: it now requires at least version 13.2. There are no functional changes in this release.
- Use version 1.7.3 of the shell-quote package, to avoid a security issue that doesn’t really affect us in this context, but could trigger spurious security warnings (https://snyk.io/test/npm/shell-quote/1.6.1)
- Add the
html
setting type, which gives you a rich text editor for a settings value
- Add the
is_premium
top level property in template.yml to indicate that this is a premium template
- Addresses some technical debt.
- Support
tag
property in setting
- Use seeded random sample of column values to interpret columns
- Fixes an issue which could cause template publication to fail
- Update version of @flourish/interpreter
- Allow published visualisations to be cloned into the SDK
- Upgrade all NPM dependencies.
- Avoid treating numeric-looking arguments as numbers.
- Reinstate preview link
- Remove template author info from side panel
- Fix z-index issue on resize bar
- Improve error checking of conditional-property overrides
- Remove stray build logging. #64
- Wait for build to finish before starting server. #65
- Add a “watch” option for build rules, to use a custom watcher
- Fix a regression that caused errors in a template with no settings: block defined in its template.yml. #63
- Support is_optional on font type settings so that they can be set to null
- Support is_optional on color type settings so that they can be set to null
- Support hide_if and show_if properties for components so that whole blocks of imported settings can be easily hidden.
- Support extending (as an alternative to replacing) entities through overrides
- Support 'property' property of override object being an array of properties
- Support template show_if/hide_if conditionals referencing imported component properties
- Fix bug with boolean-valued show_if/hide_if in settings.yml of modules
- Fix show_if and hide_if conditionals involving data bindings
- Print date and time when publishing a template.
- The “flourish register” command used to fail at the point of asking you to enter a password if you are using Node 10. This version fixes that problem.
- Add support for
svg_download
, which you should now set tofalse
for templates where SVG download wouldn't produce useful results (for example if the only SVG in the template is a legend, not the main chart)
- Do not allow template settings to be conditional on themselves.
- Fix bug that broke show_if/hide_if settings rules.
- Update all node modules to their current versions. This also means that templates created with “flourish new” will be configured to use the current version of rollup.
- New design for settings panel (matching flourish.studio). Checkboxes are now iOS-style toggle switches, and editing the color palette opens the palette editor in a separate overlay.
- Update the documentation for the
colors
setting type.
- One of the dependency packages used by the SDK fails to compile with versions of node earlier than 8.3. Update the "engines" specification in package.json to specify that we require node 8.3 or later.
- Template name and author were being inserted into the page unescaped, which would cause problems if either contains characters such as
<
that have a special meaning in HTML. This is now fixed.
- Log a warning to the console if the draw() or update() functions are declared to have parameters. #19
- Support the
--as
flag consistently across commands. (This change only affects internal users at Flourish HQ.)
- The “flourish login” command was failing at the password prompt, with Node 10. Change the way we read the password, so it works. #56
- Allow "type: hidden" properties under settings in template.yml, for documenting state that isn't an exposed setting. This is intend to help document the template for programmatic use via the upcoming API.
- Document the suggestion that such state documentation is under a "State documentation" settings block.
- Add the “flourish history” command to the output of “flourish help”.
- Add the optional template id parameter for “flourish list” to the output of “flourish help”.
- Raise an error if “flourish history” is called with no argument.
- Set the NODE_ENV environment variable to "production" or "development" depending on whether the build was triggered by
flourish publish
orflourish run
. - New command
flourish assign-version-number
, which must be used to assign a version number to an already-published template before it can be republished.
- Add a new undocumented “flourish publish” option
--local-testing
, which is only useful if you are running your own instance of the Flourish server.
- Skeleton project: suppress “circular dependency” warnings in the rollup configuration.
- Introduces new "font" setting type.
- Allow headings in imported setting blocks
- Take metadata from package.json, if present. #35
Specifically:
- Use the author, description and version fields from package.json if the corresponding field is missing from template.yml.
- Use the name from package.json as the template id, if the template.yml has no id.
- Respect the version number (as per semver.org): if the major version number is not incremented, assume the new version is backwards-compatible and upgrade existing visualisations. If the major version number is incremented, leave existing visualisations connected to the previous version.
- Add --patch, --prerelease and --release options to “flourish publish”.
- Make it possible to pass a template id as a parameter to “flourish list”, to list the available versions of a particular template.
- Add a version parameter to “flourish delete”.
- Add a “flourish history” command, to show the versions of a template that are available for use in the Live API.
- Fix a bug that meant conditional settings could not refer to a setting whose name begins with "data". #45
flourish list
now recognises the--full
option.flourish delete
now has a--force
option that makes it possible to delete a template even if there are associated visualisations, provided they were created by the same user who created the template.
flourish new
now generates skeleton code for SDK version 3- What was called
api_token
is now calledsdk_token
. This is a purely internal change, which should not affect developers using the SDK to develop Flourish templates. (Developers running their own instances of the Flourish app will need to ensure they have an up-to-date version of Flourish. On the other hand, older versions of the SDK are compatible with the newer Flourish app.)
- Modules imported using the “import” syntax are now resolved using
Node's
require.resolve
algorithm. - New “override” property for imported settings.
- New
joinable_data
property can be specified in template.yml. This is currently an undocumented feature intended for internal use by Flourish. - Since 3.3.0, the SDK now only supports Node 8+. This is now specified in
package.json
.
- Added new
colors
setting type for palette picking. - New “import” syntax to import groups of settings from a node module.
- After upgrading template.yml, write it back out with { flowLevel: 4 }, which makes the YAML come out more like the way we write it in the documentation. In practice this only affects choices for settings in key-value format, since that is the only place currently where the structure is nested four levels deep.
- Minor fix to the error handling in the template upgrade code.
- Having an
autoheight
property in template.yml is now an error rather than a warning. - Updated tests.
This is a major version change, and a forced upgrade: older versions of the SDK can no longer publish templates to Flourish. The autoheight
property is no longer supported, and instead iframe height is automatically set using default breakpoints. For templates that need to adjust the iframe height dynamically, there is a new method Flourish.setHeight()
.
Templates now need to have sdk_version: 3
in their template.yml. Old templates can be upgraded by running flourish upgrade
.
- Upgrade node modules (mocha → 5.1.1, rollup → 0.58.0)
- Improve error message from “flourish login” in the case where the server returns something unexpected. (This is mainly useful for testing changes to Flourish itself: this should never happen in normal operation.)
- Tweak the Flourish logo, and make it link to the live app.
- Change the “prepublish” npm script to “prepare”, to be compatible with future versions of NPM.
- Set the file permissions of the .flourish_sdk file so that only the current user can read it.
- Slightly better fix for #40, so that the temporary zip file is still deleted on exit.
- Upgrade ws module to 5.1.1.
- Avoid crash after publishing a template. #40
- Upgrade all node module dependencies to their current versions. This will also affect new user projects created with the “flourish new” command.
- Support the --no-build option for “flourish publish”.
- New setting type “code”.
- New “size: large” option for text and code settings.
- Drop support for specifying a username in the
id
oftemplate.yml
by setting id to<username>/<template>
. Specifying one now throws an error when publishing a template. (This feature was only used internally for Flourish templates on the @flourish account. This should not affect external users of the SDK.)
Major change: the preview pane is now embedded using the same height-adjustment
logic as when a published visualisation is embedded on another site. If the
preview pane is set to a fixed height, then Flourish.fixed_height
is true
in the template.
Bug fixes:
- Fixes boolean button group bugs
- With a subhead in place, the new_section line didn't get hidden properly
- Only send nulls for empty number settings
- Handle strings containing U+2028 or U+2029 characters in data.
- New
is_master_slide
property can be specified in template.yml. This is currently an undocumented feature intended for internal use by Flourish. - New setting width option “three quarters”.
- Settings display can now be conditional on data bindings being set.
- Boolean settings can specify
choices
in template.yml to display as buttons. - Add tests for template.yml validation, fix some validation bugs, and make some error messages more consistent.
- New
credits:
property can be specified in template.yml
- Give a sensible error message if conditional settings configuration
(
show_if:
) blocks are indented incorrectly. - Correct the formatting of the
show_if
examples in README.md - Hide section dividers when setting is hidden
- The template documentation is now taken from
GUIDE.md
if there is such a file, and only fromREADME.md
as a fallback ifGUIDE.md
does not exist. - Settings can now be displayed conditionally on the values of other settings. See the “Conditional settings” section of the documentation.
- Fix botched release (with many missing files) that was caused by a bug in npm: See npm/npm#18461
-
New settings layout options:
- width: half
- width: quarter
- new_section: true
- style: buttons
See https://flourish.rocks/developers/reference/template-files.html#settings
-
Add support for optional column bindings.
-
Add --listen option for
flourish run
to listen on a non-localhost interface. -
Add support for
image_download: false
-
Upgrade d3-dsv to 1.0.7. #17
-
Match data table names case-sensitively, even on case-insensitive filesystems. #25
-
Warn if there is no autoheight configuration.
-
Upgrade skeleton project to rollup 0.50.0
- Add missing font files. #21
- Add support for optional number settings. If “optional: true” is specified, and no value is supplied for the setting, then a null value will be passed to the template rather than zero.
- Fix “Uncaught TypeError: Cannot read property 'fireEvent' of undefined” #22
- New metadata property in template.yml “autoheight” to specify how the width of the embed should depend on the height when an auto-height embed is used.
- String settings can now have a “choices” property which restricts the values users can enter, and displays the setting as a dropdown list rather than a free-text field. If the optional “choices_other” property is also true, the user may type free text in addition to selecting from the listed choices. The choices property should be an array of strings or pairs of strings: if a pair of strings is given, the first element is displayed to the user on the dropdown menu and the second is used as the value of the setting.
- New data binding description metadata property in template.yml: in the data section, if a second string is supplied immediately following the binding name, it will be treated as the binding decription, and displayed to the user in the data bindings panel.
- Run “npm install” rather than “npm update” to install modules. (Newer versions of NPM will update package.json and package-lock.json when “npm update” is used.)
- Bundle fonts locally, so the SDK doesn’t need an internet connection.
- Work around a browser-dependent issue where mousewheel scrolling sometimes did not work after the viewport had been resized. #14
- Fix file watching when the template directory is not the current directory. #15
- More efficient generation of HTML: significantly faster reloads for large data tables. #11
- Avoid reloading many times in parallel when switching branches in git. #12
- Don’t show the “pointer” icon on the rotate button when it’s disabled.
- Specify in package.json that it only works with Node 6 and later.
- Remove another popup that slipped through the net in 2.5.1.
- Fix resizing on IE11 and Edge.
- Remove popups that don’t display properly.
- New preview interface, matching the new visualisation editor on flourish.studio
- Fix bug affecting error reporting for invalid data bindings
- Ignore repeated and trailing slashes in build rule directory paths
- Handle CSV files that have a UTF-8 BOM, as saved by Excel
- Add “flourish --version”, to print the SDK version number.
- Update top-level “flourish help”.
- Refer to the help command if you just type “flourish”.
- Do not include meta tags in SDK HTML.
- Remove full path to lessc script in the skeleton package.json, because it was not working on Windows.
- Add command-line help with “flourish help”.
- “flourish delete” now takes a template id, not a template directory.
- Cross-platform compatibility improvements: it should now work correctly on Windows, Mac and Linux.
- Run “
npm update
” on build ifpackage.json
exists butnode_modules
does not - Better error reporting if “
flourish upgrade
” is run and neithertemplate.yml
norsettings.js
exist. - “flourish whoami” prints your username, rather than your email address
- Remove top menu; "Preview" mode now available as "Standalone" via the view menu
- Legal nonsense:
- Add license
- Agree to Terms and Conditions when you register
- An unfortunate consequence of the previous point is that older versions of the SDK are no longer allowed to communicate with the server, and users are prompted to upgrade
- Use Handlebars rather than Mustache internally
- Dogfood note: our internal templates may specify
flourish/identifier
in theirid
field, so when we publish them they’re linked to theflourish
user. This only works if you’re logged in as an admin user.
- Add an option (
--as
) that only works for admin users. - Serve source maps (
template.js.map
) for easier debugging of templates. - Correct documentation for data bindings. Issue a better error message
for data bindings that don’t have suitable
column
orcolumns
specifications. Thanks to Tim Brock. - Add release notes!
- Fix the “Editor” link in the SDK header.
- Mention “flourish register” in the quickstart notes.