All notable changes to the XIBLE project will be documented in this file.
The format is based on Keep a Changelog and this project adheres to Semantic Versioning.
Nothing notable at the moment.
0.29.3 - 2024-09-26
-
Bumped version on 'http' nodepack which XIBLE ships with by default.
-
Bumped versions on several express related NPM dependencies to fix security vulnerabilities.
0.29.2 - 2024-07-20
- Rolled back
strip-ansi
package to version 6 for CommonJS require() compatibility.
0.29.1 - 2024-07-20
-
Bumped versions on several nodepacks which XIBLE ships with by default.
-
Bumped versions on several NPM dependencies.
- The publish-flow button was visible and clickable even though the setting to allow publishing flows was disabled.
0.29.0 - 2024-04-08
- Introduced
/api/flows/<flow-name>/instances/<flow-instance-id>
endpoint to get statuses of a specific flow instance.
- Better handling on broken worker IPC's when trying to stop the worker from the main process.
0.28.0 - 2024-03-11
- Support for different base href's. This allows XIBLE to be hosted from subpaths behind a reverse proxy for example. Set the
BASE_HREF
environment variable accordingly to ensure XIBLE correctly handles the base path.
0.27.0 - 2024-02-26
- Support for different stores. This makes it possible to store flows, flow-states, and the vault outside the filesystem. The first supported store besides
FileStore
isPgStore
for PostgreSQL. You can use the store by providing--flow-store-type=PgStore
and--connection-string=<connection-string>
parameters when starting XIBLE. (#94)
-
Upgrade Cypress for E2E testing.
-
Updated minumum Node.JS version to 20.
- The pattern validation for the name of a new flow in the browser was not escaped properly.
0.26.0 - 2021-05-19
-
It is now possible to
xiblepm flow install <user>/<flow>
instead ofxiblepm flow install <flow> --publish-user-name=<user>
.xiblepm flow search
returns a list in the same format. -
Whenever a nodepack is under development and the package.json name attribute does not start with 'xible-np-' or 'xible-nodepack-', a warning is thrown, indicating that the nodepack cannot be published to the registry.
-
The CLI command
xiblepm flow delete <flow-name>
has been added to delete a flow which is published to the registry. The documentation has been updated. -
The UI has an option to publish flows from the 'Flows' page. This acts similarly as the command line
xiblepm flow publish <flow-name>
. -
It is now possible to navigate the node selector within the editor using the up and down keys to select different nodes, and the space key to insert a node.
- The
.xiblerc.json
file location is now configurable in the config.json and as a result through thexible config
command.
- Calling node.getData() on a node that has no dataStructure, would throw.
0.25.0 - 2021-05-16
- Flows are now stored per user. This means that the registry can hold multiple flows by the same name, but published by different users. All functionality has been updated to reflect this change. This includes the UI and the cli commands such as
xiblepm flow install
.
0.24.0 - 2021-05-12
-
Within the structure.json of a node, developers can now configure the input data fields using the dataStructure object, instead of creating a separate
editor/index.htm
. This improves development time for new nodes by a fair bit. If aneditor/index.htm
is present, it will overrule any configured dataStructure within the structure.json. (#95) -
A new convenience method node.getData(dataName, state) to fetch all data for a data field, including related inputs if so configured. This behaves similarly as a combination of fetching data through
NODE.data.x
andNODE.getInputByName(x).getValues()
.node.getData()
is the new preferred method of fetching data. (#95)
- nodeIo.isConnected() actually returns a boolean now, instead of the amount of connectors.
0.23.2 - 2021-05-05
- Describe/help for a node, in the flow editor, was no longer visible. When a node was in focus, and the 'h' key was pressed, the help page would not show up. Similarly when clicking on the help button for that node.
0.23.1 - 2021-05-04
- Some mouse actions (scroll for zoom, doubleclick to add a node) were not registered in the flow editor in certain scenarios.
0.23.0 - 2021-05-04
-
A feature has been added to edit the node data/input values in a separate dock, which hosts more space. The amount of space available here is especially useful for nodes which potentially contain large amount of data, such as the function node.
-
When hovering the mouse cursor over a node, a box with options appears that could previously only be triggered by hitting the right key combination. These include;
- Open the help/details page of a node.
- Delete a node from a flow.
- Edit the contents of a node in a separate side panel.
- Within the dock of the flow editor, the 'clear'-logs button was not completely clickable because of overlap by the tab list.
0.22.0 - 2021-05-01
-
Input fields within nodes that have type=password, now include a toggle to make the password visible from the editor.
-
Data fields that are stored in the vault now have a shield icon available in the editor to signify this. (#90)
-
The 'object' nodepack now contains a
object.path
node to parse jsonpath expressions. (#62)
-
A focused input field now focuses the surrounding node, preventing the loss of visibility on fields that are not required. These fields hide by default of the focus is not on the node, which could make it cumbersome to edit these fields.
-
The
xible.flow.onstart
andwaitfor
nodes have been renamed to follow naming conventions. They are now calledxible.flow.on-start
andwait-for
. Existing flows which are using these nodes will have to replace it with the newly named nodes. -
Within the editor, pasting a selection of nodes will center the copy in the viewport. (#19)
-
For new installations, the default amount of statuses visible on any node in the editor is set to 5. This can be changed through the settings. The value is stored in the configuration file as
editor.nodes.statuses.max
.
- The 'http' and 'function' nodepacks are now loaded by default. They were included in the package.json, but not in the default nodepack loader. In previous version it is still possible to simply install these nodepacks directly from the registry.
0.21.0 - 2021-04-20
- Within the editor, the dock can now be docked to the left or the bottom. Previously there was no option available, it was always stuck to the left. The default location remains the left. The location will be stored in the browsers'
localStorage
to bring it back in the same place when reopening a session.
-
Connectors that are not of the type 'trigger', have a slightly different colour to make it easier to follow the flow.
-
Node routes (as described in the documentation) follow a different structure that supports both global routes, and routes for an initialized node within a flow.
-
/node/routes/flow.js
replicates the behaviour of the previously existing/node/routes.js
; hosting routes for an initialized node within a flow. The endpoint has changed to/api/nodes/node-name/routes/flow/node-id
. -
/node/routes/global.js
hosts routes directly on/api/nodes/node-name/routes/global
. The node does not need to be part of a flow for these to work. -
The purple state colour for initialized flows in the tabs within the editor are no longer suppressed.
-
npm run debug
and other commands now work on Windows by using cross-env to set environment variables, instead ofEXPORT
. -
Charts work again after version pinning the chart.js dependency.
-
Prevent issues with the zoom-to-fit button showing erratic behaviour if any of the nodes in a flow had an x or y position of exactly 0.
0.20.2 - 2021-04-18
- An invalid repository reference ended up in the shrinkwrap.json, causing installations to fail.
0.20.0 - 2021-04-14
- Nodepack- and node- logging have been improved. (#89)
-
A missing
./nodes
directory within the XIBLE installation path no longer throws a warning, and instead silently fails. This directory is used for internal development purposes only and is harmless if it is missing. -
Minimum supported node version is now 12.0.0
0.19.2 - 2021-03-07
- Non-existing '~/.xible/nodes' directory no longer prevents XIBLE from importing nodepacks and flows.
0.19.1 - 2021-03-07
-
Non-existing 'xible/nodes' directory no longer prevents XIBLE from importing nodepacks and flows.
-
Browser dependencies imported from node_modules now use
require.resolve()
to ensure a proper path is used on all platforms.
0.19.0 - 2020-07-11
-
You can now snap nodes in the editor to a grid. The setting is enabled by default. It can be toggled in the editor in the bottom left corner.
-
Searching for a node in the node selector which contains a dash, no longer needs that dash supplied in the search input. For example, the search string 'appendstring' will find the node
filesystem.file.append-string
.
- Support for NodeJS v14. (#85)
0.18.1 - 2020-04-13
- Installing nodepacks from the registry failed.
0.18.0 - 2020-04-13
-
A nodepack view has been added which lists all the installed nodepacks and their nodes.
-
Support for the command key in the editor on MacOS.
- Vault path description in settings was incorrect.
0.17.2 - 2020-03-15
-
Wrapping of node names in the editor now works cross browser, instead of only in Chrome.
-
Installing XIBLE on non-MacOS operating systems failed because of an older nested dependency in the filesystem nodepack.
0.17.1 - 2020-02-19
-
Chart labels are no longer overlapped by the chart itself. (#3)
-
Removed browser feature check for HTML imports. (#84)
0.17.0 - 2019-04-06
-
Starting flows from the 'flows' page triggers the same checks as the start button on the 'editor' page does. Existing instances can therefor be stopped and instance parameters can be provided.
-
Improved node selector in editor. Node names are now wrapped for better readability.
0.16.1 - 2019-02-01
-
Various
xible node
cli commands are functioning again. -
The cli command
xible node get <data>
now properly fetches only the specified data field when that particular bit of data is stored in the vault.
0.16.0 - 2019-01-30
-
Some of the nodes that came with XIBLE by default have been moved to their own respective nodepacks. (#79)
-
Several nodepacks are now installed by default when installing a fresh copy of XIBLE. (#78)
-
When logging in on the registry using the
xiblepm user login
command, the user gets confirmed which user is now logged on, including the registry url. The same goes for adding a new account usingxiblepm user add
. -
The
xiblepm nodepack publish
command now informs the user of the published version, after completion. (#44) -
The UI now allows users to search and install flows from the registry. This feature can be found in the 'Flows' section of your XIBLE installation. (#20)
- The
xible config list
command now returns a human readable key-value list. The key nesting is identified by dots, much like json paths and howxible config set
andxible config get
already worked. Axible config json
command has been added which sticks to the previous behaviour and simply prints the actual JSON (formatted) config. (#23)
- Improved selection handling in the editor.
0.15.0 - 2018-10-27
-
The
timing
object for flow instances now also contains thecreateDate
,initDate
andstartDate
properties. These contain aDate.now()
property for their respective dates. This allows you to track exactly when a flow instance was started. -
On the 'flows' view, you can now select a flow to view the details of that flow. This includes state, parameters, resource graphs and more.
-
Use
xiblepm nodepack init
to create a default node structure. This is useful for starting the development of a new node within a nodepack. (#81) -
Unsupported browsers can now find exactly which features the browser is missing in a 'details' window.
-
string.length
node to find the length of all input strings combined. -
TypeDefs can be related to javascript constructors, so that it is now possible for XIBLE to filter input values based on the typeDef in the extends chain. The typeDef of a value can be set by assigning a typeDef to the constructor of that value using
Node.setTypeDef(Constr, type)
. As a result, node inputs and outputs can now be connected as long as either side is in the extends chain of the other side. If an output is lower in the extends chain than the input, the values will be filtered to match at least the extends level of the input. -
Added a
input.filter-type
node to return values from a specific type only. -
The log in the editor can now be cleared using the "clear" button.
-
Improved error handling. Throwing an error can now be intercepted by dedicated xible nodes (formerly
xible.node.onerror
). Usingnode.error(err, state)
instead of simply throwing remains a valid use as it provides more details as to where the error originated. Thexible.node.error
andxible.node.onerror
nodes have been renamed toxible.flow.instance.error
andxible.flow.instance.on-error
respectively. (#80) -
Errors thrown within a flow instance now show up in the editor. (#12)
-
When publishing a nodepack (which already exists), the package.json
name
attribute is now stripped of preceeding 'xible-np-' or 'xible-nodepack-' strings before matching it against the registry to see if the publisher is the same. Prior to this, the registry would return a http 403 which would show up as 'Unsuccessful statuscode returned' in the cli. -
When initially navigating to the flows overview and after that head over to the editor, the flows would show up empty. This is now fixed. (#77)
0.14.0 - 2018-07-29
-
It is now possible to specify the input string directly for the
string.split
node. -
Hovering a global input or output on a node in the editor, now visualizes the connections as if they were directly connected. (#39)
-
Added the
object.include-keys
andobject.exclude-keys
nodes. These can be used to strip unwanted keys from objects. -
Added the
input.filter-duplicates
,input.length
,input.for-each
andinput.map
nodes. -
Added the
compare.truthy
andcompare.falsy
nodes to verify how objects evaluate in a boolean context. -
The
string.template
node now supports passing object keys as variables for string expansion. -
Added the
input.object.filter-duplicates
andinput.object.group
nodes. These allow duplication filtering and grouping based on an object key. -
Added the
string.join
node, which allows you to join multiple strings together. A separator can be introduced between the strings. -
Support for
script type="module"
in node editor contents. Note that these script elements are untouched when they are processed by the browser. Script elements that do not contain thetype="module"
directive will be evaluated like ever before, with the document argument attached to the shadow root andthis
referring to the node itself.
-
XIBLE now throws an error if it is already running according to the PID file. Similarly, CLI commands which require that XIBLE is running will throw an error if that is not the case.
-
The
input.group
node has been replaced by theinput.concat
node.
- When viewing a node in help/describe mode, it now properly zooms/scales in Firefox. (#82)
0.13.0 - 2018-06-05
-
The commandline
xiblepm nodepack upgrade
can now be used to upgrade all installed nodepacks in one go. (#42) -
The commandline
xiblepm nodepack update
has been introduced as an alias forxiblepm nodepack upgrade
. -
All
xiblepm
commands that interact with the registry now support the optional--registry
parameter. You can use this to deviate from the default registry stored in your config file. -
Implemented commandline
xible server stop
to stop a running XIBLE server. (#76) -
Support for textareas in node editor contents. (#75)
-
Added several string nodes such as
string.replace
. (#74) -
The editor now keeps track of all messages shared by nodes. To save space in the editor, the resource graphs and this new log functionality share the same area and can be toggled. (#63)
- Flow instances that exited on their own, no longer auto start when XIBLE restarts.
0.12.0 - 2018-05-13
-
Nodes can now host their own routes through the API of XIBLE. Have a look at the new routes documentation on how to use them. (#71)
-
Starting a flow through the editor which uses
xible.flow.param
nodes will now request for the values of those parameters. (#57) -
NodeOutput triggered functions can now return promises instead of relying on the callback parameter. (#73)
-
Hexadecimal colors are now allowed in typedefs.
-
object.assign
node works on all target inputs, instead of just the first one. -
Saving or deploying a flow while instances on it are running, prompts the sure to ensure it is okay that these running instances are stopped. (#38)
-
Starting while instances are already running prompts the user to stop the running instances or leave them running.
-
The
xible.flow.param
node has been renamed toxible.flow.instance.param
. The parameter (value) is assigned and therefore specific to the instance, not the flow.
-
cast
node is working again now the output type is properly reset when all connectors detach. -
Installing a nodepack through the editor now properly reloads the typedefs. This ensures that the colors on inputs & outputs are working, and that connectors work across the inheritance chain of a newly added typedef.
-
Flow instances stop if there is no more work to be done. Also, XIBLE exists properly after calling
xible.close()
.
0.11.1 - 2018-04-28
- TypeDef API route test cases.
-
The
store
node is working again now the input and output types are set properly. -
When the Flow initialization level is set to 1 (Flow), the pre initialized instance is now spawned correctly when saving/updating flows.
-
Typedefs are properly checked on existance when multiple nodepack paths are initialized.
-
Deleted flows no longer re-appear in the editor after the connection to the XIBLE server reconnects.
0.11.0 - 2018-04-23
-
Added several shortcuts for
xiblepm user *
command line commands. (#67) -
Alternative panning support without a scroll wheel by holding down
shift
and the left mouse button. (#59) -
Use
ctrl
to combine multiple area selectors in the editor. (#69)
- Improved
xiblepm user add
registration process. (#65)
-
Individual password characters are no longer briefly visible on the windows command line. (#66)
-
Fixed potential XSS attack concerning flows downloaded from the registry where the nodes were not installed on the target machine.
-
input.duplicate
node with amount of duplicates set to '1' would throw 'already called back'. (#68) -
Installing nodepacks from the registry through the editor works again. (#70)
0.10.0 - 2018-04-08
-
Added the
xible.flow.param
node including applicable command line and REST API options. These allow parameters to be send when starting a flow. (#45) -
A flow can now be instantiated multiple times. (#46)
-
Added
input.*
nodes to modify return values. (#48) -
Implemented
xible service restart
command to restart the xible service if it was installed. (#51) -
Connection status messages are now visible on every view. (#52)
-
xible.flow.start
raises an error if a flow does not exist. -
xible.flow.start
contains an output for the instance it created when starting a flow. -
If the extends keyword for a typedef is not set, it defaults to
object
. -
NodeOutputs that do not have a type set, will no longer be triggered to ensure only values within the extends chain of the calling NodeInput are returned. (#49)
-
Configuring SSL now redirects plain HTTP requests to the configured SSL port, instead of
plain HTTP port + 1
. -
The node help page now properly shows the original (structure) type of the node inputs and outputs, instead of the active type.
- The editor is working again properly after including the shrinkwrap which points to the right xible-wrapper version. (#61)
0.9.1 - 2017-12-20
-
xible service install
is working again. (#43) -
npm start
from the XIBLE directory is working again. -
Navigating the settings page properly uses async requests again instead of reloading the entire page.
0.9.0 - 2017-11-01
-
Within the editor, optional input fields are now hidden unless the containing node is either hovered or selected. (#36)
-
The
xible
command line interface now supports the 'node' context for getting and setting data values on nodes. (#34) -
Add a 'state' output to the
xible.flow
node. This returns the running state of a flow, a number between 0 and 5, inclusive. -
Implemented
xiblepm nodepack remove
for removing nodepacks. (#24) -
Implemented
xiblepm nodepack upgrade
for upgrading nodepacks. (#41)
- Instances of Node only receive a trigger event when they are an event node at the start of a flow. Previously, this event would also be emitted whenever an input trigger was hit.
-
document.*
nodes are removed, after they were deprecated in favor ofobject.*
. -
xiblepm flow remove
is removed after it was deprecated in version 0.7.0. It was replaced byxible flow delete
.
-
Long uninterrupted strings in node descriptions would overflow the node selector.
-
Performance of node selector has been greatly improved, especially when there are many nodes installed.
0.8.0 - 2017-09-10
-
Introduction of type definitions for inputs and outputs. This allows types to extend other types and provide custom colors for those types. (#17)
-
Added
object.*
nodes to replace thedocument.*
nodes.
-
document.*
nodes are now deprecated in favorobject.*
. -
Registry actions such as
xiblepm nodepack install
use the proper OS dependent 'tmp' directory. (#33)
log.console
node is now removed, after it was deprecated in favor ofconsole.log
. (#27)
0.7.0 - 2017-08-20
-
Flows can be started/stopped and deleted using the cli. See the xible cli documentation for more information. (#18)
-
The
xible
command line interface supports the 'config' context just likexiblepm
. (#22) -
console.log
,console.error
andconsole.clear
nodes are now included in XIBLE.log.console
is deprecated and will be removed in a future release. (#27)
-
xiblepm flow remove
is deprecated in favor ofxible flow delete
. -
The command line interface tools
xible
&xiblepm
are now stored in./bin
. -
The
document.assign
node only callbacks once when multiple documents are hooked up to the 'document' input. -
Callbacks from nodes in response to
output.on('trigger')
resulting from ainput.getValues()
call can now only be called back once. An error is thrown if called multiple times. -
Direct mode can now be enabled/disabled through the settings. It is disabled by default. (#26)
-
Resizing the editor to only narrowly fit the cpu/mem/delay charts no longer toggles the scrollbar in- and out of view. (#11)
-
Publishing flows to the registry no longer includes the vault data (#25)
0.6.0 - 2017-06-09
-
Node inputs now have a string value
assignsOutputType
that allows the given output to be assigned the same type as the input. See the node structure documentation for more information. -
The default zoomstate of a flow in the editor can be changed through the settings. The value is stored in the configuration file as
editor.viewstate.zoomstateonopen
. -
The maximum amount of statuses visible on any node in the editor can be changed through the settings. The value is stored in the configuration file as
editor.nodes.statuses.max
. (#13) -
A flow saves some performance metrics in the timing object. This object is only available on flows in the main thread.
-
xible-wrapper is now fetched from npm. It used to be distributed within the xible package itself.
-
All xiblepm commands deliver the user-auth-token header to the registry, if the user is logged in. Previously, the user token was only sent for publish commands.
0.5.0 - 2017-06-03
- All of the command line
xiblepm flow
context functions now work. This means that you can install flows from the registry, and publish flows to the registry. See the xiblepm documentation for more information.
- Setting an output to global in the editor correctly updates the corresponding inputs within a newly created flow. (#15)
0.4.1 - 2017-05-14
- Installing nodepacks through the editor or via
xiblepm nodepack install
now works on Windows. (#14)
0.4.0 - 2017-04-30
-
Flows can be initialized at different levels, allowing for a faster on-demand start. See
Settings/Flows
in your XIBLE installation for more details. -
The editor contains a link to the XIBLE docs.
-
Command-line
xible service
options to run XIBLE through systemctl/systemd. -
LICENSE.md file.
-
eslint/airbnb is now the default code style. For the time being,
editor/
is ignored from the linter. -
The runnable state of a flow is better synchronized with the editor. If a flow is not runnable, the deploy and start buttons are unavailable. Intermediate state changes reflect directly in the editor.
-
The status of a flow is now contained in a single
state
parameter, instead of relying on indivual parameters forstarting
,started
,stopped
, etc.
xiblepm nodepack install
returns the correct exit code if nodepack.install() fails.
0.3.1 - 2017-04-19
- Config module failed to create new config.json upon fresh installation.