diff --git a/.github/ISSUE_TEMPLATE.md b/.github/ISSUE_TEMPLATE.md
index 6c24c21c..81982cee 100644
--- a/.github/ISSUE_TEMPLATE.md
+++ b/.github/ISSUE_TEMPLATE.md
@@ -4,25 +4,20 @@
### Environment
-- Scope: desktop IDE, browser IDE, CLI
-- Version: 0.xx.x | dev
-- OS: Windows 10 | macOS High Sierra (10.13) | Ubuntu 18.04
-- Machine: i3, 4 GB RAM
+* Scope: desktop IDE, browser IDE, CLI
+* Version: 0.xx.x | dev
+* OS: Windows 10 | macOS High Sierra (10.13) | Ubuntu 18.04
+* Machine: i3, 4 GB RAM
### Steps to reproduce
-Try to narrow down your scenario to a minimal working/failing example. That is,
-if you have a big program causing a problem, start with deleting parts not
-relevant to the issue and observing the result: is the problem still there?
-Repeat until you get the most straightforward sequence of steps to reproduce
-the problem without any noise surrounding it.
+Try to narrow down your scenario to a minimal working/failing example. That is, if you have a big program causing a problem, start with deleting parts not relevant to the issue and observing the result: is the problem still there? Repeat until you get the most straightforward sequence of steps to reproduce the problem without any noise surrounding it.
-1. Open this
-2. Press that
-3. Click here and there
+1. Open this
+2. Press that
+3. Click here and there
-If the test program is not trivial, attach its `.xodball`. You’ll have to zip
-the file as GitHub does not accept file attachments with custom extensions.
+If the test program is not trivial, attach its `.xodball`. You’ll have to zip the file as GitHub does not accept file attachments with custom extensions.
### Expected behavior
@@ -32,22 +27,15 @@ What should happen?
What’s happen now?
-If it will make the issue more illustrative, attach screenshots or GIF’s of
-what’s going on.
+If it will make the issue more illustrative, attach screenshots or GIF’s of what’s going on.
### Console output
-Are there any errors in the console? Press `Ctrl+Shift+I` to open the developer
-tools and find the “Console” tab there. Error are shown in red. Expand an
-error, then copy and paste the output verbatim. Use fenced code blocks (triple
-backticks) to preserve formatting.
+Are there any errors in the console? Press `Ctrl+Shift+I` to open the developer tools and find the “Console” tab there. Error are shown in red. Expand an error, then copy and paste the output verbatim. Use fenced code blocks (triple backticks) to preserve formatting.
### How to fix
-If you have an idea on how the bug can be fixed, provide a short
-description.
-
-
+If you have an idea on how the bug can be fixed, provide a short description.
## Refactoring Template
@@ -61,28 +49,23 @@ Provide a description of scope the refactoring would touch.
Which backward compatibility would be dropped.
-
-
## Feature/Story Template
### Rationale
-What we have now, what we want then? How the implementation would
-make the product better for end-users?
+What we have now, what we want then? How the implementation would make the product better for end-users?
### Prerequisites
-Refer to issues by their #numbers that should be completed before
-the development of this issue would make sense
+Refer to issues by their #numbers that should be completed before the development of this issue would make sense
### Acceptance criteria
-Provide some steps that an end-user would be able to perform when
-the feature could be considered as implemented. E.g.:
+Provide some steps that an end-user would be able to perform when the feature could be considered as implemented. E.g.:
-- [ ] I can click a new Boo menu item
-- [ ] A dialog appears where I can enter Foo value
-- [ ] Clicking OK changes all nodes’ labels to the Foo value
+* [ ] I can click a new Boo menu item
+* [ ] A dialog appears where I can enter Foo value
+* [ ] Clicking OK changes all nodes’ labels to the Foo value
### Out of scope
@@ -90,8 +73,7 @@ Explicitly list functionality that is not intended to be done with this story.
### How to implement
-If you have an idea on how to implement it, provide a short
-description.
+If you have an idea on how to implement it, provide a short description.
### How to test
diff --git a/.github/PULL_REQUEST_TEMPLATE.md b/.github/PULL_REQUEST_TEMPLATE.md
index b8ccf6fb..ff8fe074 100644
--- a/.github/PULL_REQUEST_TEMPLATE.md
+++ b/.github/PULL_REQUEST_TEMPLATE.md
@@ -1,8 +1,5 @@
-Use a plain English sentence for the title. Listing closed PR titles for
-a period should form a human-readable changelog.
+Use a plain English sentence for the title. Listing closed PR titles for a period should form a human-readable changelog.
Refer to issues related to the PR.
-In related issues place checkmarks near items that should be considred
-completed once the PR would be approved. If the PR doesn’t really solve
-a particular item it’d be easy to uncheck it.
+In related issues place checkmarks near items that should be considred completed once the PR would be approved. If the PR doesn’t really solve a particular item it’d be easy to uncheck it.
diff --git a/CHANGELOG.md b/CHANGELOG.md
index 95f4ca1e..42c0771a 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,10 +1,9 @@
# Change Log
-All notable changes to this project will be documented in this file. See
-[standard-version](https://github.com/conventional-changelog/standard-version)
-for commit guidelines.
+All notable changes to this project will be documented in this file. See [standard-version](https://github.com/conventional-changelog/standard-version) for commit guidelines.
+
## 0.25.3 (2018-11-22)
### Bug fixes
@@ -18,6 +17,7 @@ for commit guidelines.
* [ide] Clarify error message about bad references when pasting nodes (#1541)
+
## 0.25.2 (2018-11-06)
### Bug fixes
@@ -41,6 +41,7 @@ for commit guidelines.
* [nodes] Make `shift-left` and `shift-right` interpret its inputs as 32-bit integers, fix pin labels and descriptions. (#1524)
+
## 0.25.1 (2018-10-19)
### Bug fixes
@@ -51,146 +52,101 @@ for commit guidelines.
* [ide] Fixed a bug with workspace switching when installed packages were used from the initial workspace (#1475)
* [ide] Put the missing ampersand in the "Upgrade Arduino Packages & Toolchains" menu item (#1483)
-
+
## 0.25.0 (2018-10-16)
### Features and enhancements
* [c++] Make the runtime code compatible with ESP8266 MCUs. (#1456, #1460)
-* [ide] Employ `arduino-cli` for hardware packages installing, compiling, and
- uploading. It makes possible to use the same variety of target boards which
- Arduino IDE supports. In other words, you can install third-party hardware
- packages to be used by XOD. In particular, ESP8266-based boards like WEMOS
- and NodeMCU board index is included out of the box. (#1459, #1465, #1469)
-* [ide] Rather than silently starting to download a potentially big hardware
- package on the first upload, an explicit offer to download and install is
- shown. The download process is visualized with the progress bar. (#1459)
-* [ide] Add a new item to the Deploy menu to upgrade already installed
- toolchains to their latest versions. As a consequence, after the upgrade, XOD
- is capable of uploading to Arduino Nano with the new bootloader, manufactured
- after Jan 2018. (#1467)
-* [ide] Show all compilation/upload options for a given board, not only MCU.
- In particular, it allows compiling and uploading to ESP8266-based boards.
- (#1462)
+* [ide] Employ `arduino-cli` for hardware packages installing, compiling, and uploading. It makes possible to use the same variety of target boards which Arduino IDE supports. In other words, you can install third-party hardware packages to be used by XOD. In particular, ESP8266-based boards like WEMOS and NodeMCU board index is included out of the box. (#1459, #1465, #1469)
+* [ide] Rather than silently starting to download a potentially big hardware package on the first upload, an explicit offer to download and install is shown. The download process is visualized with the progress bar. (#1459)
+* [ide] Add a new item to the Deploy menu to upgrade already installed toolchains to their latest versions. As a consequence, after the upgrade, XOD is capable of uploading to Arduino Nano with the new bootloader, manufactured after Jan 2018. (#1467)
+* [ide] Show all compilation/upload options for a given board, not only MCU. In particular, it allows compiling and uploading to ESP8266-based boards. (#1462)
### New nodes
-* [`xod-dev/esp8266-mcu`](https://xod.io/libs/xod-dev/esp8266-mcu/) — a new
- library for accessing the internet using the onboard Wi-Fi of an
- ESP8266-based board when it is used as a target. (#1456, #1463, #1466)
+* [`xod-dev/esp8266-mcu`](https://xod.io/libs/xod-dev/esp8266-mcu/) — a new library for accessing the internet using the onboard Wi-Fi of an ESP8266-based board when it is used as a target. (#1456, #1463, #1466)
### Bug fixes
-* [ide] The switch to `arduino-cli` allowed to abandon toolchain repackaging.
- Now they are downloaded from the original vendor locations. It should remove
- all errors related to SSL, TLS, and Kaspersky antivirus while uploading to a
- new board for the first time.
-* [ide] Fix IDE crashing when trying to change the arity level of a node having
- variadic pins labeled as plain numbers, like `1`, `2`, `3`. (#1470)
-* [nodes] Fixed DHT11 and DHT2x reading on some sensor/board combinations.
- (#1464)
-
+* [ide] The switch to `arduino-cli` allowed to abandon toolchain repackaging. Now they are downloaded from the original vendor locations. It should remove all errors related to SSL, TLS, and Kaspersky antivirus while uploading to a new board for the first time.
+* [ide] Fix IDE crashing when trying to change the arity level of a node having variadic pins labeled as plain numbers, like `1`, `2`, `3`. (#1470)
+* [nodes] Fixed DHT11 and DHT2x reading on some sensor/board combinations. (#1464)
+
## 0.24.1 (2018-09-17)
### Bug fixes
-* [ide] Fixed a bug that caused bundled Arduino libraries to be unreachable by
- build tools. (#1449)
+* [ide] Fixed a bug that caused bundled Arduino libraries to be unreachable by build tools. (#1449)
+
## 0.24.0 (2018-09-13)
### Features and enhancements
-* [core] Implemented the `#pragma XOD require` directive. Now a XOD library
- author can declare a dependency on a regular Arduino C++ library hosted on
- GitHub. It will be automatically downloaded and installed for library users.
- (#1425, #1426)
-* [core] Optimize one of the transpilation stages: topological graph sorting.
- For complex projects, it brings 10 to 100× faster transpilation. (#1430)
-* [ide] A patch can now be scrolled with mouse scroll or the scroll gesture on
- a laptop touchpad. (#1412)
-* [nodes] `xod/uart/uart-*` constructor nodes now initialize the interface on
- their own. No need to use the `begin` node separately. (#1442)
-* [chore] Upgrade to NodeJS v10 and the latest Electron Builder. It gives
- slightly better performance and will bring much faster and traffic-saving IDE
- updates starting from the release following the current. (#1429, #1435)
+* [core] Implemented the `#pragma XOD require` directive. Now a XOD library author can declare a dependency on a regular Arduino C++ library hosted on GitHub. It will be automatically downloaded and installed for library users. (#1425, #1426)
+* [core] Optimize one of the transpilation stages: topological graph sorting. For complex projects, it brings 10 to 100× faster transpilation. (#1430)
+* [ide] A patch can now be scrolled with mouse scroll or the scroll gesture on a laptop touchpad. (#1412)
+* [nodes] `xod/uart/uart-*` constructor nodes now initialize the interface on their own. No need to use the `begin` node separately. (#1442)
+* [chore] Upgrade to NodeJS v10 and the latest Electron Builder. It gives slightly better performance and will bring much faster and traffic-saving IDE updates starting from the release following the current. (#1429, #1435)
### New nodes
-* [`xod/core/pad-with-zeroes`](https://xod.io/libs/xod/core/pad-with-zeroes) —
- add leading zeroes to numbers. (#1436)
-* [`xod/datetime`](https://xod.io/libs/xod/datetime/) — a new standard library
- to deal with timestamps, dates, and time. (#1436)
-* [`xod-dev/ds-rtc`](https://xod.io/libs/xod-dev/ds-rtc/) — a rewrite of now
- obsolete `ds1307-*` nodes from `common-hardware`. More consistent and using
- the new `datetime` structure. (#1438)
-* [`xod-dev/pn532-nfc`](https://xod.io/libs/xod-dev/pn532-nfc/) — a new library
- to scan, read, and write RFID/NFC tags. (#1424)
+* [`xod/core/pad-with-zeroes`](https://xod.io/libs/xod/core/pad-with-zeroes) — add leading zeroes to numbers. (#1436)
+* [`xod/datetime`](https://xod.io/libs/xod/datetime/) — a new standard library to deal with timestamps, dates, and time. (#1436)
+* [`xod-dev/ds-rtc`](https://xod.io/libs/xod-dev/ds-rtc/) — a rewrite of now obsolete `ds1307-*` nodes from `common-hardware`. More consistent and using the new `datetime` structure. (#1438)
+* [`xod-dev/pn532-nfc`](https://xod.io/libs/xod-dev/pn532-nfc/) — a new library to scan, read, and write RFID/NFC tags. (#1424)
### Deprecations and removals
-* `xod/common-hardware/ds1307-rtc-*` are deprecated in favor of the new
- `xod-dev/ds-rtc` library.
-* `xod/uart/begin` is deprecated now because the base `uart-*` nodes now
- initialize the interface on their own.
+* `xod/common-hardware/ds1307-rtc-*` are deprecated in favor of the new `xod-dev/ds-rtc` library.
+* `xod/uart/begin` is deprecated now because the base `uart-*` nodes now initialize the interface on their own.
### Bug fixes
-* [ide] Deprecated and utility nodes started to appear in quick search results
- due to a regression in 0.23.0. That’s fixed. (#1418)
-* [ide] Revert horizontal space amount for node labels which caused shortening
- of terminal and bus labels longer than 2-3 characters in 0.23.0. (#1420)
+* [ide] Deprecated and utility nodes started to appear in quick search results due to a regression in 0.23.0. That’s fixed. (#1418)
+* [ide] Revert horizontal space amount for node labels which caused shortening of terminal and bus labels longer than 2-3 characters in 0.23.0. (#1420)
+
## 0.23.0 (2018-08-17)
### Features and enhancements
* [core] The buses concept is introduced. (#1392, #1397)
-* [ide] Dramatic optimizations while working with patches and debugging: moving
- nodes, binding values, creating links, searching for nodes, watching values,
- etc. (#1396, #1400, #1402, #1404)
-* [ide] Show constant nodes’ values as their labels unless overriden rather
- than static `constant-number`, `constant-string`, etc. (#1366)
-* [ide] Do not auto-stop a debug session on patch changes, show a note about
- the change instead. (#1374)
-* [ide] Split deployment pane output into several tabs dedicated to Compiler,
- Uploader, and Debugger. (#1409)
+* [ide] Dramatic optimizations while working with patches and debugging: moving nodes, binding values, creating links, searching for nodes, watching values, etc. (#1396, #1400, #1402, #1404)
+* [ide] Show constant nodes’ values as their labels unless overriden rather than static `constant-number`, `constant-string`, etc. (#1366)
+* [ide] Do not auto-stop a debug session on patch changes, show a note about the change instead. (#1374)
+* [ide] Split deployment pane output into several tabs dedicated to Compiler, Uploader, and Debugger. (#1409)
* [ide] Make constant and watch nodes resizable like comments. (#1375)
-* [core] Comment out XOD pragmas in C\++ code so that GCC produces no
- compilation warnings. (#1360)
+* [core] Comment out XOD pragmas in C\++ code so that GCC produces no compilation warnings. (#1360)
### Bug fixes
* [core] Detect and report pin name clashes. (#1356)
* [ide] Make possible re-opening the same project. (#1407)
-* [nodes] Fix the `uart` node for Uno-like boards which previously produced
- a compilation error about undefined `SERIAL_PORT_HARDWARE_OPEN`. (#1382)
+* [nodes] Fix the `uart` node for Uno-like boards which previously produced a compilation error about undefined `SERIAL_PORT_HARDWARE_OPEN`. (#1382)
+
## 0.22.0 (2018-07-11)
### Features and enhancements
-* [ide] Most of the error messages appearing on the snackbar made persistent,
- that is they don’t hide automatically. (#1284)
-* [ide] Don’t try to auto-fix ambiguous byte literals like `15abc` or `7C` in
- the inspector. (#1313)
-* [core] Now a character surrounded by single quotes (`'G'`) is a valid byte
- literal which denotes a corresponding value from the ASCII table. (#1317)
+* [ide] Most of the error messages appearing on the snackbar made persistent, that is they don’t hide automatically. (#1284)
+* [ide] Don’t try to auto-fix ambiguous byte literals like `15abc` or `7C` in the inspector. (#1313)
+* [core] Now a character surrounded by single quotes (`'G'`) is a valid byte literal which denotes a corresponding value from the ASCII table. (#1317)
* [core] Make some error messages more clear and consistent (#1330).
* [ide] Add View menu items to toggle the project browser and inspector (#1340).
-* [ide] Allow links between inputs and outputs of the same node. It will
- transpile successfully if the node contains a `defer` on the loop path inside
- it. (#1349).
+* [ide] Allow links between inputs and outputs of the same node. It will transpile successfully if the node contains a `defer` on the loop path inside it. (#1349).
### New nodes
-* [`xod/core/length(string)`](https://xod.io/libs/xod/core/length(string))
+* [`xod/core/length(string)`]()
* [`xod/common-hardware/lps331-barometer`](https://xod.io/libs/xod/common-hardware/lps331-barometer/)
Libraries for dealing with the internet connection and UART interface:
@@ -203,137 +159,95 @@ Libraries for dealing with the internet connection and UART interface:
### Bug fixes
-* [core] Properly transpile programs with patch specializations containing
- abstract nodes. They were not resolved recursively. (#1343)
-* [core] Adjust code generation so that it produces no warnings other than
- unknown `#pragma`’s. It also fixes compiler errors for the string
- concatenation when compiling for Arduino Due. (#1347)
-* [ide] When saving a project with File → Save Copy As don’t mark the original
- ongoing project as saved. (#1282)
-* [ide] Do not show a hard to escape suggestion to switch the workspace when a
- damaged project failed to load. (#1290)
-* [ide] View → Pan to Origin used to break IDE when hit on an empty patch.
- Fixed. (#1314)
-* [ide] Inspector now always show a disabled input with a “custom type”
- placeholder for custom type pins. (#1331)
-* [nodes] Fix [`xod/math/log-bx`](https://xod.io/libs/xod/math/log-bx) broken
- during the recent `xod/math` extraction. (#1320)
-* [ide] Tweak library sorting in the project browser so that `x/foo` comes
- before `x/foo-bar`. (#1332)
-* [ide] Creating a patch with a very long name no longer cause project browser
- controls elements to shift out of its view area. (#1338)
-* [ide] Get rid of white stripes appearing near sidebars on some computers,
- notably, on Linux and when zooming in. (#1339, #1344)
+* [core] Properly transpile programs with patch specializations containing abstract nodes. They were not resolved recursively. (#1343)
+* [core] Adjust code generation so that it produces no warnings other than unknown `#pragma`’s. It also fixes compiler errors for the string concatenation when compiling for Arduino Due. (#1347)
+* [ide] When saving a project with File → Save Copy As don’t mark the original ongoing project as saved. (#1282)
+* [ide] Do not show a hard to escape suggestion to switch the workspace when a damaged project failed to load. (#1290)
+* [ide] View → Pan to Origin used to break IDE when hit on an empty patch. Fixed. (#1314)
+* [ide] Inspector now always show a disabled input with a “custom type” placeholder for custom type pins. (#1331)
+* [nodes] Fix [`xod/math/log-bx`](https://xod.io/libs/xod/math/log-bx) broken during the recent `xod/math` extraction. (#1320)
+* [ide] Tweak library sorting in the project browser so that `x/foo` comes before `x/foo-bar`. (#1332)
+* [ide] Creating a patch with a very long name no longer cause project browser controls elements to shift out of its view area. (#1338)
+* [ide] Get rid of white stripes appearing near sidebars on some computers, notably, on Linux and when zooming in. (#1339, #1344)
+
## 0.21.2 (2018-06-27)
### Bug fixes
-* [core] Fix transpilation error caused by values bound to collapsed variadic
- node. (#1306)
-* [nodes] Fix implementation of
- [`xod/math/clip`](https://xod.io/libs/xod/math/clip). (#1307)
-* [core] Fix a very rare case where constant values could be overwritten.
- (#1308)
+* [core] Fix transpilation error caused by values bound to collapsed variadic node. (#1306)
+* [nodes] Fix implementation of [`xod/math/clip`](https://xod.io/libs/xod/math/clip). (#1307)
+* [core] Fix a very rare case where constant values could be overwritten. (#1308)
+
## 0.21.1 (2018-06-25)
### Bug fixes
* [c++] Fix `isSettingUp` function that returned opposite value. (#1297)
-* [tutorial] Update tutorial to use proper PORT literals, mention new pins and
- nodes. (#1296)
+* [tutorial] Update tutorial to use proper PORT literals, mention new pins and nodes. (#1296)
+
## 0.21.0 (2018-06-09)
### Features and enhancements
-* [core] Add a custom type system which allows defining own complex types.
- (#1216, #1224)
-* [core] Add a new built-in type: `Port`. Port specifies a board hardware pin
- like `A4` or `D4`. Port specification became more straightforward rather than
- plain numbers used before. (#1232)
-* [core] Add a new built-in type: `Byte`. A byte is a group of eight bits
- specified in a binary, decimal, or hexadecimal form. (#1192)
+* [core] Add a custom type system which allows defining own complex types. (#1216, #1224)
+* [core] Add a new built-in type: `Port`. Port specifies a board hardware pin like `A4` or `D4`. Port specification became more straightforward rather than plain numbers used before. (#1232)
+* [core] Add a new built-in type: `Byte`. A byte is a group of eight bits specified in a binary, decimal, or hexadecimal form. (#1192)
* [core] Clarify error messages related to generic type conflicts. (#1246)
-* [nodes] Add byte-to-number and number-to-byte conversion nodes to
- [`xod/bits`](https://xod.io/libs/xod/bits/). (#1186)
+* [nodes] Add byte-to-number and number-to-byte conversion nodes to [`xod/bits`](https://xod.io/libs/xod/bits/). (#1186)
* [nodes] Make nodes in `xod/bits` use the new Byte type. (#1261)
-* [nodes] Make nodes in `xod/common-hardware` use the new Byte and Port types.
- They now also expose unified pins for an explicit update, update
- acknowledgment, and error signaling. (#1274)
-* [nodes] Nodes related to mathematics moved from `xod/core` to
- [`xod/math`](https://xod.io/libs/xod/math/) (#1251)
-* [nodes] Nodes related to general purpose input/output moved from `xod/core`
- to [`xod/gpio`](https://xod.io/libs/xod/gpio/) (#1256)
-* [nodes] Nodes for the I²C bus communication moved from `xod/core` to
- [`xod/i2c`](https://xod.io/libs/xod/i2c/) (#1270)
-* [tutorial] Links in the `welcome-to-xod` tutorial no longer use goo.gl link
- shortener and point to web-pages directly (#1217)
+* [nodes] Make nodes in `xod/common-hardware` use the new Byte and Port types. They now also expose unified pins for an explicit update, update acknowledgment, and error signaling. (#1274)
+* [nodes] Nodes related to mathematics moved from `xod/core` to [`xod/math`](https://xod.io/libs/xod/math/) (#1251)
+* [nodes] Nodes related to general purpose input/output moved from `xod/core` to [`xod/gpio`](https://xod.io/libs/xod/gpio/) (#1256)
+* [nodes] Nodes for the I²C bus communication moved from `xod/core` to [`xod/i2c`](https://xod.io/libs/xod/i2c/) (#1270)
+* [tutorial] Links in the `welcome-to-xod` tutorial no longer use goo.gl link shortener and point to web-pages directly (#1217)
### Deprecations and removals
-* All nodes related to mathematics in `xod/core` are deprecated now. Use
- corresponding nodes from `xod/math` instead.
-* Nodes `analog-input`, `pwm-output`, `digital-input`, and `digital-output`
- from `xod/core` are deprecated now. Use `analog-read`, `pwm-write`,
- `digital-read`, `digital-write` from the new `xod/gpio`, or
- `xod/common-hardware/analog-sensor` instead.
-* Plain numbers for pins defining a port are deprecated now. Although value `3`
- is still valid, prefer explicit `A3` or `D3`. IDE will auto-correct wrong
- values on input commit.
-* Plain numbers for pins storing a byte are deprecated now. Although value `3`
- is still valid, prefer explicit `3d`, `03h`, or `11b`. IDE will auto-correct
- wrong values on input commit.
+* All nodes related to mathematics in `xod/core` are deprecated now. Use corresponding nodes from `xod/math` instead.
+* Nodes `analog-input`, `pwm-output`, `digital-input`, and `digital-output` from `xod/core` are deprecated now. Use `analog-read`, `pwm-write`, `digital-read`, `digital-write` from the new `xod/gpio`, or `xod/common-hardware/analog-sensor` instead.
+* Plain numbers for pins defining a port are deprecated now. Although value `3` is still valid, prefer explicit `A3` or `D3`. IDE will auto-correct wrong values on input commit.
+* Plain numbers for pins storing a byte are deprecated now. Although value `3` is still valid, prefer explicit `3d`, `03h`, or `11b`. IDE will auto-correct wrong values on input commit.
### Bug fixes
-* [core] Correctly pick up values bound to generic terminals and use them as
- default values for pins created by these terminals. (#1250)
-* [ide] Fix some cases when generic pins were not colored even if their types
- can be deduced. (#1248)
+* [core] Correctly pick up values bound to generic terminals and use them as default values for pins created by these terminals. (#1250)
+* [ide] Fix some cases when generic pins were not colored even if their types can be deduced. (#1248)
* [ide] Reset project preferences when creating a new project. (#1252)
* [ide] Make toolchain installation immune to download interruptions. (#1255)
+
## 0.20.3 (2018-05-22)
### Bug fixes
-* [build] Fix macOS distro download filename. Now it has proper `.dmg`
- extension. (#1198)
-* [core] Fix opening projects saved prior to 0.20.0 with some pins explicitly
- bound to `Never`. Notably, the bug led to a transpilation error when using
- `digital-output` from own `xod/core` fork. (#1207)
-* [core] Fix untitled outputs name assignment for C\++. Previously, all
- untitled outputs got name `output_OUT`. Now they are `output_OUT1`,
- `output_OUT2`, and so on. (#1204)
-* [core] Fix C\++ generation from generic nodes containing
- `not-implemented-in-xod` which previously was silently failing. (#1225)
-* [ide] Minimize performance regression in 0.20.x caused by generics resolution
- (#1213, #1214)
-* [ide] Fix occasional `[Object object]` errors when deploying. Now they are
- still there but formatted properly. (#1203)
-* [ide] Format transpilation errors that previously appeared as cryptic
- objects. (#1230)
-* [ide] Fix uncaught error handling. Now they pop up as a regular error for
- easier reporting. (#1230)
-* [ide] Fix canceling when opening a project. Previously it broke the current
- project (#1202)
+* [build] Fix macOS distro download filename. Now it has proper `.dmg` extension. (#1198)
+* [core] Fix opening projects saved prior to 0.20.0 with some pins explicitly bound to `Never`. Notably, the bug led to a transpilation error when using `digital-output` from own `xod/core` fork. (#1207)
+* [core] Fix untitled outputs name assignment for C\++. Previously, all untitled outputs got name `output_OUT`. Now they are `output_OUT1`, `output_OUT2`, and so on. (#1204)
+* [core] Fix C\++ generation from generic nodes containing `not-implemented-in-xod` which previously was silently failing. (#1225)
+* [ide] Minimize performance regression in 0.20.x caused by generics resolution (#1213, #1214)
+* [ide] Fix occasional `[Object object]` errors when deploying. Now they are still there but formatted properly. (#1203)
+* [ide] Format transpilation errors that previously appeared as cryptic objects. (#1230)
+* [ide] Fix uncaught error handling. Now they pop up as a regular error for easier reporting. (#1230)
+* [ide] Fix canceling when opening a project. Previously it broke the current project (#1202)
+
## 0.20.2 (2018-05-08)
### Bug fixes
* [core] Fix crash on creating a variadic patch with non-matching pin types. (#1194)
-* [core] Recognize legacy defer nodes(`xod/core/defer-*`) and don't complain
- about a graph cycle when they are used. (#1195)
+* [core] Recognize legacy defer nodes(`xod/core/defer-*`) and don't complain about a graph cycle when they are used. (#1195)
+
## 0.20.1 (2018-04-29)
### Bug fixes
@@ -341,84 +255,64 @@ Libraries for dealing with the internet connection and UART interface:
* [core] Fix resolving of abstract nodes nested deeply inside regular patches.
+
## 0.20.0 (2018-04-27)
### Features and enhancements
-* [core] Implement generic nodes. Such nodes may work with values type of which
- is not known in advance. See the user’s guide to learn more.
-* [core] Values of any type bound to pins are now stored as-is using strings.
- As a good side effect, one may now bind scientific notation numbers (`3e-6`
- for `0.000003`), infinity (`+Inf`, `-Inf`), and `NaN` in the Inspector.
- Strings are now always enquoted. When you deal with regular (non-generic)
- pins, the required quotes will be added for you automatically. (#1164)
-* [ide] Allow relinking of occupied input pins. Now instead of showing an
- error, IDE removes the existing link, replacing it with the new one. (#1120)
+* [core] Implement generic nodes. Such nodes may work with values type of which is not known in advance. See the user’s guide to learn more.
+* [core] Values of any type bound to pins are now stored as-is using strings. As a good side effect, one may now bind scientific notation numbers (`3e-6` for `0.000003`), infinity (`+Inf`, `-Inf`), and `NaN` in the Inspector. Strings are now always enquoted. When you deal with regular (non-generic) pins, the required quotes will be added for you automatically. (#1164)
+* [ide] Allow relinking of occupied input pins. Now instead of showing an error, IDE removes the existing link, replacing it with the new one. (#1120)
* [ide] Preserve window position and size across launches. (#1134)
-* [ide] The main window now can be as small as 700px in width. It allows quicker
- 1-to-1 screenshoting for docs and Medium. (#1135)
-* [core] Create marker nodes to indicate a patch is an internal utility or
- deprecated legacy. In IDE’s project browser such nodes are hidden by default.
- To show them click the funnel button in the pane header. (#1137, #1141)
-* [cli] Implement a simple tabular testing feature that should become an xUnit
- of XOD. (#1148)
-* [c++] Add `isSettingUp` node API function to check whether the current
- evaluation is a part of the very first transaction which is run in `setup()`.
- (#1152)
-* [core] More informative errors for many “bad program” scenarios. Now they
- always include a full path trace from the entry point patch to the patch
- having a problem. (#1155, #1156)
+* [ide] The main window now can be as small as 700px in width. It allows quicker 1-to-1 screenshoting for docs and Medium. (#1135)
+* [core] Create marker nodes to indicate a patch is an internal utility or deprecated legacy. In IDE’s project browser such nodes are hidden by default. To show them click the funnel button in the pane header. (#1137, #1141)
+* [cli] Implement a simple tabular testing feature that should become an xUnit of XOD. (#1148)
+* [c++] Add `isSettingUp` node API function to check whether the current evaluation is a part of the very first transaction which is run in `setup()`. (#1152)
+* [core] More informative errors for many “bad program” scenarios. Now they always include a full path trace from the entry point patch to the patch having a problem. (#1155, #1156)
* [nodes] `xod/core/equal` made generic and now can handle strings.
* [nodes] `xod/core/select` made generic and now can handle strings and booleans.
### Deprecations and removals
-* [nodes] `cast-*-to-*` are deprecated. Use specialized nodes like
- `format-number` instead.
-* [nodes] `debounce-boolean` is deprecated. Use generic `xod/core/debounce`
- instead.
+* [nodes] `cast-*-to-*` are deprecated. Use specialized nodes like `format-number` instead.
+* [nodes] `debounce-boolean` is deprecated. Use generic `xod/core/debounce` instead.
* [nodes] `defer-*` are deprecated. Use generic `xod/core/defer` instead.
* [nodes] `gate-*` are deprecated. Use generic `xod/core/gate` instead.
-* [nodes] BREAKING :exclamation: The original `gate` (without a type suffix) is
- renamed to `xod/core/branch`.
+* [nodes] BREAKING :exclamation: The original `gate` (without a type suffix) is renamed to `xod/core/branch`.
* [nodes] `if-else-string` is deprecated. Use generic `if-else` instead.
* [nodes] `nth-number` is deprecated. Use generic `nth-input` instead.
### Bug fixes
-* [ide] Remove actual C\++ implementation when deleting the
- `not-implemented-in-xod` node. (#1142)
-* [ide] Make vertical and horizontal lines (links and nodes’ edges) always
- sharp (#1168)
+* [ide] Remove actual C\++ implementation when deleting the `not-implemented-in-xod` node. (#1142)
+* [ide] Make vertical and horizontal lines (links and nodes’ edges) always sharp (#1168)
+
## 0.19.2 (2018-03-12)
### Bug fixes
-* [nodes] Do not emit an unconditional pulse from `xod/core/defer-pulse` on
- boot (#1108)
+* [nodes] Do not emit an unconditional pulse from `xod/core/defer-pulse` on boot (#1108)
* [nodes] Remove extraneous utility output from `xod/core/discretize` (#1106)
* [core] Fix IDE crashing when opening some patches with dead links (#1111)
+
## 0.19.0 (2018-03-02)
### Features and enhancements
-* [core] Implement variadic nodes. An ability to have an adjustable number of
- input pins on a node.
-* [nodes] Nodes from the standard library made variadic if applicable: `add`,
- `multiply`, `bitwise-*`, `any`, `and`, `or`, `concat`, `discretize`,
- `select`, and others.
-* [ide] Show richer tooltips on node hover. It shows the node label, fully
- qualified type, and errors if there are any.
+* [core] Implement variadic nodes. An ability to have an adjustable number of input pins on a node.
+* [nodes] Nodes from the standard library made variadic if applicable: `add`, `multiply`, `bitwise-*`, `any`, `and`, `or`, `concat`, `discretize`, `select`, and others.
+* [ide] Show richer tooltips on node hover. It shows the node label, fully qualified type, and errors if there are any.
### New nodes
* [xod/core/join](https://xod.io/libs/xod/core/join/)
+
## 0.18.1 (2018-02-09)
### Bug fixes
@@ -426,38 +320,22 @@ Libraries for dealing with the internet connection and UART interface:
* [ide] Fix user-installed libraries not showing up when opening the project.
+
## 0.18.0 (2018-02-07)
### Features and enhancements
-* [core] Perform loop unroll optimization technique for the generated C\++
- code. It dramatically improves RAM consumption and XOD execution performance.
- (thanks, @awgrover).
-* [ide] Eight new embedded tutorial chapters (21 through 28) explaining pulse
- basics and LCD interaction.
-* [ide] Support Markdown in patch comments. Your patches now can be more
- expressive. See the tutorial project for example.
-* [ide] Add OS file associations for `*.xodball`, `project.xod`, `*.xodp` and a
- list of recent items in the app system menu. Currently works on Windows and
- macOS, not Linux yet.
-* [ide] You’re not limited now in where on file system you save a project.
- Previously a project was saved in a “workspace,” now you may choose an
- arbitrary directory with the native OS “Save” dialog.
-* [ide] Blur the difference between single-file projects (xodballs) and regular
- multi-file projects. Both kinds can be seamlessly saved/loaded through “File
- → Save,” “File → Save as,” “File → Save a Copy,” and “File → Open.”
-* [ide] No more clunky project selection dialog on desktop IDE start: just a
- ready to use blank project with a welcoming comment.
-* [ide] Add “View → Pan to Origin” (Home) and “View → Pan to Center”
- (Ctrl+Home).
-* [ide] Upgrade and tweak IDE build toolchain (Webpack). A consequence is 2×
- smaller distributive code size which means IDE loads faster.
-* [ide] Unify font sizes and styles across all sidebars, popups, dialogs. The
- main font size now is 12px rather than 11px. That makes IDE more accessible
- and comfortable to work with.
-* [ide] Code editor has got block commenting (Ctrl+/), auto-close opening
- brackets, trailing space highlight, auto-clear trailing spaces on empty
- lines.
+* [core] Perform loop unroll optimization technique for the generated C\++ code. It dramatically improves RAM consumption and XOD execution performance. (thanks, @awgrover).
+* [ide] Eight new embedded tutorial chapters (21 through 28) explaining pulse basics and LCD interaction.
+* [ide] Support Markdown in patch comments. Your patches now can be more expressive. See the tutorial project for example.
+* [ide] Add OS file associations for `*.xodball`, `project.xod`, `*.xodp` and a list of recent items in the app system menu. Currently works on Windows and macOS, not Linux yet.
+* [ide] You’re not limited now in where on file system you save a project. Previously a project was saved in a “workspace,” now you may choose an arbitrary directory with the native OS “Save” dialog.
+* [ide] Blur the difference between single-file projects (xodballs) and regular multi-file projects. Both kinds can be seamlessly saved/loaded through “File → Save,” “File → Save as,” “File → Save a Copy,” and “File → Open.”
+* [ide] No more clunky project selection dialog on desktop IDE start: just a ready to use blank project with a welcoming comment.
+* [ide] Add “View → Pan to Origin” (Home) and “View → Pan to Center” (Ctrl+Home).
+* [ide] Upgrade and tweak IDE build toolchain (Webpack). A consequence is 2× smaller distributive code size which means IDE loads faster.
+* [ide] Unify font sizes and styles across all sidebars, popups, dialogs. The main font size now is 12px rather than 11px. That makes IDE more accessible and comfortable to work with.
+* [ide] Code editor has got block commenting (Ctrl+/), auto-close opening brackets, trailing space highlight, auto-clear trailing spaces on empty lines.
### New nodes
@@ -470,21 +348,17 @@ Libraries for dealing with the internet connection and UART interface:
* [ide] Fix few typos in UI (thanks, nick).
* [ide] Quick help panel text is copyable now.
-* [ide] When starting debugger patch panning position is preserved, no more
- jumps out of work area. Breadcrumbs bar no longer overlaps the patch when
- appear.
+* [ide] When starting debugger patch panning position is preserved, no more jumps out of work area. Breadcrumbs bar no longer overlaps the patch when appear.
* [ide] Bring back grabbing and hand cursors while panning.
-* [ide] Fix C\++ code editor improper syntax highlighting in the middle of
- identifiers and comments.
-* [ide] The `not-implemented-in-xod` node now carries C\++ implementation when
- copied to the clipboard, the code template which appears with the node is
- applied immediately (thanks, bitrex).
+* [ide] Fix C\++ code editor improper syntax highlighting in the middle of identifiers and comments.
+* [ide] The `not-implemented-in-xod` node now carries C\++ implementation when copied to the clipboard, the code template which appears with the node is applied immediately (thanks, bitrex).
* [ide] Fix link to mouse and keyboard shortcuts in the top menu.
* [ide] Make text in the deployment panel copyable.
* [ide] Do not trim leading whitespace in an output of the compiler.
* [ide] Gracefully handle USB connection lost while debugging.
+
## 0.17.1 (2017-12-27)
### Bug fixes
@@ -497,26 +371,23 @@ Libraries for dealing with the internet connection and UART interface:
* [ide] Fix aliasing of IDE desktop icon on Windows.
+
## 0.17.0 (2017-12-26)
### Features and enhancements
-* [ide] General user interface facelift. Updated icons, reduced visual noise,
- more accurate accents. Better messages and the main menu.
-* [ide] Make panels dockable. Now you can tweak location of any sidebar panel:
- dock it to the left or right, hide, resize.
-* [ide] The project browser, quick search suggester, and selected node got own
- help boxes. All available with H key as it was before.
-* [ide] Introduce deploy pane. Now all output during upload and debug messages
- go here.
-* [ide] Improve syntax highlighting in the embedded code editor. Match XOD C++
- node API symbols, inttypes, and few Arduino built-in functions.
+* [ide] General user interface facelift. Updated icons, reduced visual noise, more accurate accents. Better messages and the main menu.
+* [ide] Make panels dockable. Now you can tweak location of any sidebar panel: dock it to the left or right, hide, resize.
+* [ide] The project browser, quick search suggester, and selected node got own help boxes. All available with H key as it was before.
+* [ide] Introduce deploy pane. Now all output during upload and debug messages go here.
+* [ide] Improve syntax highlighting in the embedded code editor. Match XOD C++ node API symbols, inttypes, and few Arduino built-in functions.
### Bug fixes
* [nodes] Fix wrong description of `xod/core/pulse-on-false` (thanks @awgrover)
+
## 0.16.1 (2017-12-13)
### Features and enhancements
@@ -525,63 +396,36 @@ Libraries for dealing with the internet connection and UART interface:
### Bug fixes
-* [core] Fix code generation for C\++ nodes local to the current project: no
- more `@` symbols in the code
+* [core] Fix code generation for C\++ nodes local to the current project: no more `@` symbols in the code
* [ide] Trigger library search when a library name is pasted from the clipboard
* [ide] Fix regression of macOS auto-update failure introduced in 0.16.0
-* [ide] Fix patch board break when trying to drag-n-drop the patch node on
- itself or adjacent UI elements
-* [ide] Fix embedded code editor overflow past the window boundaries when
- source code is too long
-* [ide] Handle network connection problems gracefully while authorization and
- library publishing
-* [ide] Escape regular expression symbols while searching for a node (thanks
- @awgrover)
+* [ide] Fix patch board break when trying to drag-n-drop the patch node on itself or adjacent UI elements
+* [ide] Fix embedded code editor overflow past the window boundaries when source code is too long
+* [ide] Handle network connection problems gracefully while authorization and library publishing
+* [ide] Escape regular expression symbols while searching for a node (thanks @awgrover)
* [ide] In the account pane, send credentials on Enter press
+
## 0.16.0 (2017-12-01)
### Features and enhancements
-* [ide] Add a feature to install libraries right from IDE. Hit “File → Add
- Library”, enter a name as seen at https://xod.io/libs/, and you’re ready to
- use new nodes.
-* [ide] Add a feature to publish your project as a library. Hit “File →
- Publish Library” and you’re done. See your library at https://xod.io/libs/.
- Others can immediately install it for themselves.
-* [ide] Add account pane to login/logout from within IDE. Hit “View →
- Toggle Account Pane” to access it. Login is required to publish a library.
-* [ide] Embed C++ editor for low-level nodes. Double-click a
- `not-implemented-in-xod` node to open and edit the code.
-* [ide] Click and drag for bulk selection with a marquee. Move, copy, paste,
- delete faster. Drag from left to right to select only items completely
- covered by the rectangle, drag from right to left to also include intersected
- entities. Hold Ctrl (⌘ on macOS) key to add/remove items from the selection.
-* [ide] Tweak paste behavior so that the entities are inserted to the left of
- the current selection, not at the origin. That means you can Ctrl+C and then
- Ctrl+V multiple times to build a row of similar nodes very quickly.
-* [ide] Track changes in patches and save project incrementally. That means
- faster saves, removing deleted patches’ files, and keeping files not related
- to XOD intact.
-* [ide] “Save Project” is generalized to “Save All.” Libraries, if they have
- changed are saved too, and effectively create a fork automatically.
-* [ide] Allow resizing of the project browser and inspector panes. Drag a
- handle between them to adjust the height proportion.
-* [ide] Automatically adjust panning position when opening a patch so that the
- patch aligns with the top left corner.
+* [ide] Add a feature to install libraries right from IDE. Hit “File → Add Library”, enter a name as seen at https://xod.io/libs/, and you’re ready to use new nodes.
+* [ide] Add a feature to publish your project as a library. Hit “File → Publish Library” and you’re done. See your library at https://xod.io/libs/. Others can immediately install it for themselves.
+* [ide] Add account pane to login/logout from within IDE. Hit “View → Toggle Account Pane” to access it. Login is required to publish a library.
+* [ide] Embed C++ editor for low-level nodes. Double-click a `not-implemented-in-xod` node to open and edit the code.
+* [ide] Click and drag for bulk selection with a marquee. Move, copy, paste, delete faster. Drag from left to right to select only items completely covered by the rectangle, drag from right to left to also include intersected entities. Hold Ctrl (⌘ on macOS) key to add/remove items from the selection.
+* [ide] Tweak paste behavior so that the entities are inserted to the left of the current selection, not at the origin. That means you can Ctrl+C and then Ctrl+V multiple times to build a row of similar nodes very quickly.
+* [ide] Track changes in patches and save project incrementally. That means faster saves, removing deleted patches’ files, and keeping files not related to XOD intact.
+* [ide] “Save Project” is generalized to “Save All.” Libraries, if they have changed are saved too, and effectively create a fork automatically.
+* [ide] Allow resizing of the project browser and inspector panes. Drag a handle between them to adjust the height proportion.
+* [ide] Automatically adjust panning position when opening a patch so that the patch aligns with the top left corner.
* [ide] Inserted comments are a bit wider by default.
-* [core] BREAKING :exclamation: node C++ implementations are now read from
- files named `patch.cpp`. Former `any.cpp` and `arduino.cpp` are ignored. A
- patch *must* include `not-implemented-in-xod` node to take it’s C++
- implementation into account.
-* [core] BREAKING :exclamation: untitled pins changed numbering scheme.
- Instead of `IN_0, IN_1, IN_2, ...` and `OUT_0, OUT_1, OUT_2, ...`, now they
- are `IN1, IN2, IN3, ...` and `OUT1, OUT2, OUT3, ...`.
-* [core] `*.xod*` files are now terminated with newline symbol on save. It
- makes them a bit friendlier for manual editing.
-* [cli] `xodc install` now installs all transient library dependencies
- automatically.
+* [core] BREAKING :exclamation: node C++ implementations are now read from files named `patch.cpp`. Former `any.cpp` and `arduino.cpp` are ignored. A patch _must_ include `not-implemented-in-xod` node to take it’s C++ implementation into account.
+* [core] BREAKING :exclamation: untitled pins changed numbering scheme. Instead of `IN_0, IN_1, IN_2, ...` and `OUT_0, OUT_1, OUT_2, ...`, now they are `IN1, IN2, IN3, ...` and `OUT1, OUT2, OUT3, ...`.
+* [core] `*.xod*` files are now terminated with newline symbol on save. It makes them a bit friendlier for manual editing.
+* [cli] `xodc install` now installs all transient library dependencies automatically.
### New nodes
@@ -623,6 +467,7 @@ Libraries for dealing with the internet connection and UART interface:
* [ide] Fix possible single slot offset when placing nodes with a double-click.
+
## 0.15.1 (2017-10-31)
### Bug fixes
@@ -630,44 +475,23 @@ Libraries for dealing with the internet connection and UART interface:
* [nodes] Fix regression. `xod/core/watch` compiles again.
+
## 0.15.0 (2017-10-31)
### Features and enhancements
-* [core] Feedback loops! Previously, you could not upload a program containing
- graph cycles, in other words, your program’s “now” had no easy way to depend
- on the past. Now, you can place a special `defer` node in the way of a
- feedback link, and such program will be accepted. The `defer` nodes act as
- loop breakers to define execution priorities and escape points for potential
- dead-locks.
-* [core] The standard node library (`xod/*`) is now tied to the distributive,
- not to a workspace. You’re no longer required to clear the workspace to get
- new version goodness.
-* [core] Local libraries are now searched in `$workspace/__lib__` instead of
- `$workspace/lib`. It allows to have a project with name `lib` and makes the
- previous enhancement work for existing users.
-* [ide] We’ve upgraded XOD build toolchain. Distributives lost in size from 25
- to 60% (depends on OS), the IDE now takes less time to start and eats less
- RAM.
-* [ide] The IDE now warns about unsaved changes when a project is about to
- close. No more work loss.
-* [ide] Double-click a node to drill down. That is a quicker way of browsing a
- program. The feature also works in the debug mode and lets you see watches
- of nested patches.
-* [ide] Ctrl+A (⌘ A on macOS) selects all entities when the focus is on the
- patch board.
+* [core] Feedback loops! Previously, you could not upload a program containing graph cycles, in other words, your program’s “now” had no easy way to depend on the past. Now, you can place a special `defer` node in the way of a feedback link, and such program will be accepted. The `defer` nodes act as loop breakers to define execution priorities and escape points for potential dead-locks.
+* [core] The standard node library (`xod/*`) is now tied to the distributive, not to a workspace. You’re no longer required to clear the workspace to get new version goodness.
+* [core] Local libraries are now searched in `$workspace/__lib__` instead of `$workspace/lib`. It allows to have a project with name `lib` and makes the previous enhancement work for existing users.
+* [ide] We’ve upgraded XOD build toolchain. Distributives lost in size from 25 to 60% (depends on OS), the IDE now takes less time to start and eats less RAM.
+* [ide] The IDE now warns about unsaved changes when a project is about to close. No more work loss.
+* [ide] Double-click a node to drill down. That is a quicker way of browsing a program. The feature also works in the debug mode and lets you see watches of nested patches.
+* [ide] Ctrl+A (⌘ A on macOS) selects all entities when the focus is on the patch board.
* [ide] Cloud compilation limit is shown explicitly now in the Upload dialog.
-* [nodes] The [`delay` node](https://xod.io/libs/xod/core/delay) got an extra
- `ACT` output. It addresses many cases when you have had to use an extra
- `flip-flop` along with the `delay`.
-* [nodes] The [`clock` node](https://xod.io/libs/xod/core/clock) got the `EN`
- input. Now you can temporary disable a clock when necessary.
-* [c++] BREAKING :exclamation: The way strings are represented in C++ changed
- significantly. Now they are more memory-efficient. Iteration interface is
- backward-compatible, but creation interface is not. An action can be required
- only if you make native (C++) nodes which operate on strings.
-* [docs] Add [mouse and keyboard shortuts](https://xod.io/docs/reference/shortcuts/).
- Also available via “Help” menu in the IDE.
+* [nodes] The [`delay` node](https://xod.io/libs/xod/core/delay) got an extra `ACT` output. It addresses many cases when you have had to use an extra `flip-flop` along with the `delay`.
+* [nodes] The [`clock` node](https://xod.io/libs/xod/core/clock) got the `EN` input. Now you can temporary disable a clock when necessary.
+* [c++] BREAKING :exclamation: The way strings are represented in C++ changed significantly. Now they are more memory-efficient. Iteration interface is backward-compatible, but creation interface is not. An action can be required only if you make native (C++) nodes which operate on strings.
+* [docs] Add [mouse and keyboard shortuts](https://xod.io/docs/reference/shortcuts/). Also available via “Help” menu in the IDE.
* [docs] Add [supported hardware reference](https://xod.io/docs/reference/supported-hardware/).
### New nodes
@@ -689,55 +513,29 @@ Libraries for dealing with the internet connection and UART interface:
### Bug fixes
-* [ide] You can scroll the Inspector if its contents are too tall. Now 13"
- laptop users should not be disappointed while editing a `text-lcd-16x2` node.
-* [ide] If a project has integrity violations it no longer crashes an IDE. That
- could happen if a library your project depends on made some breaking changes,
- or if you made a mistake while editing `*.xodp` files manually. Now missing
- pins and patches are drawn in red giving you an opportunity to fix the
- project and go on.
+* [ide] You can scroll the Inspector if its contents are too tall. Now 13" laptop users should not be disappointed while editing a `text-lcd-16x2` node.
+* [ide] If a project has integrity violations it no longer crashes an IDE. That could happen if a library your project depends on made some breaking changes, or if you made a mistake while editing `*.xodp` files manually. Now missing pins and patches are drawn in red giving you an opportunity to fix the project and go on.
* [ide] Fix a bug when an extra click was required to close the last tab.
* [ide] Fix a regression bug when deleting a patch lead to errors.
* [ide] Restore ESC behavior to cancel linking.
-* [ide] Fix tab reordering behavior. Now it works the same way as you expect.
- Previously a dragged tab was swapped with the target tab instead of being
- inserted there.
+* [ide] Fix tab reordering behavior. Now it works the same way as you expect. Previously a dragged tab was swapped with the target tab instead of being inserted there.
* [ide] Fix crash on patch rename if the debugger is active.
-* [ide] Ctrl+A (⌘ A on macOS) now work as expected on all text inputs where
- it did not before.
-* [ide] The contents of dialogs is no longer selectable like it is a regular
- web-page.
-* [core] Fix scenarios when values bound to inputs “leaked” to initial output
- values in C++. The simplest case to reproduce was to make a patch with
- `button` and `led` node. On boot, the LED should be turned off, but it was
- on.
-* [c++] `isTimedOut(ctx)` now returns `false` if a node was not even scheduled
- with `setTimeout`.
+* [ide] Ctrl+A (⌘ A on macOS) now work as expected on all text inputs where it did not before.
+* [ide] The contents of dialogs is no longer selectable like it is a regular web-page.
+* [core] Fix scenarios when values bound to inputs “leaked” to initial output values in C++. The simplest case to reproduce was to make a patch with `button` and `led` node. On boot, the LED should be turned off, but it was on.
+* [c++] `isTimedOut(ctx)` now returns `false` if a node was not even scheduled with `setTimeout`.
+
## 0.14.0 (2017-10-04)
### Features and enhancements
-* Brand new tutorial. It has two versions: the first one is embedded right into
- the `welcome-to-xod` project you see after the desktop IDE installation or
- browser-based IDE launch; the second one is published statically in the
- [documentation](https://xod.io/docs/) section of the site.
-* The debugger and watches! Now, you can watch for value changes in real-time
- right inside the desktop XOD IDE. Place a `xod/core/watch` node, link it,
- and upload the program with “Debug after upload” checkbox set. The debugger
- also lets you view incoming serial data log like the Serial Monitor in
- Arduino IDE does.
-* Bulk selection and mass actions. Hold the Ctrl key (Command on macOS) while
- clicking on nodes, links, or comments to select multiple entities. After
- that, you could move or delete them all at once.
-* Cut/copy/paste. Finally, clipboard functionality you expect from any
- application is here. Ctrl+C/Ctrl+V your nodes on a patch, across patches, or
- even across XOD IDE windows.
-* Cloud compilation. Now, rather than pull the whole compiler toolchain to your
- system, you can choose to compile in our cloud. Check “Compile in the cloud”
- box in the Upload Dialog to use it. This is the first step toward making the
- browser-based XOD IDE fully functional.
+* Brand new tutorial. It has two versions: the first one is embedded right into the `welcome-to-xod` project you see after the desktop IDE installation or browser-based IDE launch; the second one is published statically in the [documentation](https://xod.io/docs/) section of the site.
+* The debugger and watches! Now, you can watch for value changes in real-time right inside the desktop XOD IDE. Place a `xod/core/watch` node, link it, and upload the program with “Debug after upload” checkbox set. The debugger also lets you view incoming serial data log like the Serial Monitor in Arduino IDE does.
+* Bulk selection and mass actions. Hold the Ctrl key (Command on macOS) while clicking on nodes, links, or comments to select multiple entities. After that, you could move or delete them all at once.
+* Cut/copy/paste. Finally, clipboard functionality you expect from any application is here. Ctrl+C/Ctrl+V your nodes on a patch, across patches, or even across XOD IDE windows.
+* Cloud compilation. Now, rather than pull the whole compiler toolchain to your system, you can choose to compile in our cloud. Check “Compile in the cloud” box in the Upload Dialog to use it. This is the first step toward making the browser-based XOD IDE fully functional.
### New nodes
@@ -749,29 +547,22 @@ Libraries for dealing with the internet connection and UART interface:
* Fixed upload dialog hang if the serial port was busy (thanks @awgrover)
* Fixed multiple recurring typos of “Ouput” with missing “t” (thanks @awgrover)
-* Always keep patches sorted alphabetically in the Project Browser. Previously,
- new patches and patch renames broke the order.
+* Always keep patches sorted alphabetically in the Project Browser. Previously, new patches and patch renames broke the order.
+
## 0.13.0 (2017-09-04)
### Features and enhancements
* Switch patch board layout from slots to a slot/grid hybrid.
-* Add nodes quick search. Hit Edit → Insert Node, or Double click the patch
- board, or press `I` key to invoke it.
-* Add the Helpbar. The new pane that shows contextual help for a node. Hit View →
- Toggle Helpbar or press `H` key to show it.
-* Implemented panning of the patch board. Now you can navigate large patches by
- pressing spacebar or middle mouse button and drag.
-* The terminal nodes now have their own outstanding look (circles) so that you
- can quickly scan a patch to find its inputs and outputs.
-* Now you can set starting values for `flip-flop`, `count`, and many other
- simply binding a desired initial value to their outputs.
-* Add few missing tooltips for UI controls in the Inspector and Project
- Browser.
-* Browser-based IDE now shows the direct download link for the desktop IDE when
- trying to upload.
+* Add nodes quick search. Hit Edit → Insert Node, or Double click the patch board, or press `I` key to invoke it.
+* Add the Helpbar. The new pane that shows contextual help for a node. Hit View → Toggle Helpbar or press `H` key to show it.
+* Implemented panning of the patch board. Now you can navigate large patches by pressing spacebar or middle mouse button and drag.
+* The terminal nodes now have their own outstanding look (circles) so that you can quickly scan a patch to find its inputs and outputs.
+* Now you can set starting values for `flip-flop`, `count`, and many other simply binding a desired initial value to their outputs.
+* Add few missing tooltips for UI controls in the Inspector and Project Browser.
+* Browser-based IDE now shows the direct download link for the desktop IDE when trying to upload.
* The Help main menu item now goes last in the desktop IDE as it should be.
### New nodes
@@ -807,63 +598,42 @@ Libraries for dealing with the internet connection and UART interface:
### Bug fixes
-* Fix upload on boards with multiple controller variants. Notably, Arduino Nano
- which has ATmega328 and ATmega168 versions.
+* Fix upload on boards with multiple controller variants. Notably, Arduino Nano which has ATmega328 and ATmega168 versions.
* `xod/core/count` node now works fine with a fractional `STEP`’s.
-* Fix compilation error saying “`dtostrf` is not defined” which occurred on
- non-AVR platforms when trying to cast a number to a string.
+* Fix compilation error saying “`dtostrf` is not defined” which occurred on non-AVR platforms when trying to cast a number to a string.
* Avoid false `xod/common-hardware/button` triggering on boot.
-* Tweak buttons overlapping long node label for a selected item in the Project
- Browser.
-* Double click on the add (+) button in the Project Browser no longer drops you
- to the clicked node implementation. You can still drill down if you’d click
- the label outside of a button.
+* Tweak buttons overlapping long node label for a selected item in the Project Browser.
+* Double click on the add (+) button in the Project Browser no longer drops you to the clicked node implementation. You can still drill down if you’d click the label outside of a button.
### Optimizations
-* Move most of the static data in generated C++ to flash memory section. It
- lowers RAM consumption at the order of 2× to 3×.
-* Get rid of a separate `topology` mapping in C++. Now all node IDs are already
- sorted topologically. It saves one or two bytes of RAM and Flash per native
- node.
-* Provide API for native nodes to access values stored in their outputs
- directly. It saves RAM for the nodes which keep their internal state, e.g.
- `flip-flop`, `count`, `fade`, etc.
+* Move most of the static data in generated C++ to flash memory section. It lowers RAM consumption at the order of 2× to 3×.
+* Get rid of a separate `topology` mapping in C++. Now all node IDs are already sorted topologically. It saves one or two bytes of RAM and Flash per native node.
+* Provide API for native nodes to access values stored in their outputs directly. It saves RAM for the nodes which keep their internal state, e.g. `flip-flop`, `count`, `fade`, etc.
### Deprecations and removals
-* Rudimental support for JS-based platforms is dropped so that we can focus on
- C++ microcontroller platforms and support them well.
+* Rudimental support for JS-based platforms is dropped so that we can focus on C++ microcontroller platforms and support them well.
+
## 0.12.1 (2017-08-09)
### Bug fixes
-* Fix upload failure if a `xod/common-hardware/text-lcd-16x2` or
- `xod/common-hardware/servo` node is used. XOD IDE now carries vital Arduino
- libraries in the distro.
-* Improve UI responsiveness, fix IDE performance degradation over time. The
- problem was in a developer/debugging tool integrated to XOD IDE which is not
- very interesting for end-users. The tool is no longer enabled in public
- releases.
+* Fix upload failure if a `xod/common-hardware/text-lcd-16x2` or `xod/common-hardware/servo` node is used. XOD IDE now carries vital Arduino libraries in the distro.
+* Improve UI responsiveness, fix IDE performance degradation over time. The problem was in a developer/debugging tool integrated to XOD IDE which is not very interesting for end-users. The tool is no longer enabled in public releases.
* Fix bound values propagation in complex scenarios with deeply nested patches.
+
## 0.12.0 (2017-08-07)
### Features and enhancements
-* Implement in-patch comments. Now you can “Edit → Insert Comment” to place
- text note right onto the patch board. You will see an example of using
- comments in the `welcome-to-xod` project if you would create a new workspace
- (File → Select Workspace) or launch [browser-based IDE](https://xod.io/ide/).
-* New build system no longer depends on Arduino IDE being installed. No more
- splash screen while uploading a XOD program to Arduino.
-* Project `*.xodp` and `*.xod` files now don’t store fields with default values
- like `"description": ""` or `"comments": []`. This makes the files more
- compact and immune to insignificant diffs when they’re stored under VCS such
- as Git.
+* Implement in-patch comments. Now you can “Edit → Insert Comment” to place text note right onto the patch board. You will see an example of using comments in the `welcome-to-xod` project if you would create a new workspace (File → Select Workspace) or launch [browser-based IDE](https://xod.io/ide/).
+* New build system no longer depends on Arduino IDE being installed. No more splash screen while uploading a XOD program to Arduino.
+* Project `*.xodp` and `*.xod` files now don’t store fields with default values like `"description": ""` or `"comments": []`. This makes the files more compact and immune to insignificant diffs when they’re stored under VCS such as Git.
### New nodes
@@ -905,76 +675,46 @@ Libraries for dealing with the internet connection and UART interface:
### Bug fixes
-* **BREAKING**: Change pin naming scheme for native C++ nodes to avoid
- collisions with global macros. `Inputs::PORT` became `input_PORT`. As a
- consequence compilation for Arduino Zero, M0, MKR1000 is possible now.
- Workspaces with an older version of the standard library will no longer
- compile.
-* Fix serial port enumeration when doing Deploy → Upload to Arduino (regression
- of v0.11.0).
-* Fix overprotection of Inspector’s number input box from wrong values. It
- didn’t allow to enter negative numbers. Now they are valid as should be and
- scientific notation also works, i.e. one can enter 1e-6 for 0.000001.
-* Program start no longer initiate a single pulse on every pulse link what
- could lead to an incorrect initial state of a device.
-* Fix `text-lcd-16x2` didn’t clear the tail of a line which results in trash
- symbols when a new text was shorter than the previous.
-* Fix few transpilation bugs in edge cases: values bound via Inspector did not
- propagate to nested patch nodes, multiple links from the same node to another
- node were mistakenly squashed.
-
+* **BREAKING**: Change pin naming scheme for native C++ nodes to avoid collisions with global macros. `Inputs::PORT` became `input_PORT`. As a consequence compilation for Arduino Zero, M0, MKR1000 is possible now. Workspaces with an older version of the standard library will no longer compile.
+* Fix serial port enumeration when doing Deploy → Upload to Arduino (regression of v0.11.0).
+* Fix overprotection of Inspector’s number input box from wrong values. It didn’t allow to enter negative numbers. Now they are valid as should be and scientific notation also works, i.e. one can enter 1e-6 for 0.000001.
+* Program start no longer initiate a single pulse on every pulse link what could lead to an incorrect initial state of a device.
+* Fix `text-lcd-16x2` didn’t clear the tail of a line which results in trash symbols when a new text was shorter than the previous.
+* Fix few transpilation bugs in edge cases: values bound via Inspector did not propagate to nested patch nodes, multiple links from the same node to another node were mistakenly squashed.
+
## 0.11.0 (2017-07-24)
### Features and enhancements
-* Remove pulse pins in most nodes. They now react to changes of input values
- immediately without any help of pulse signals. This slightly shifts XOD
- paradigm toward more simple and casual. Check out updated
- [tutorial](https://xod.io/docs/tutorial/) to see how the change simplified
- programs.
-* Where pulses are still necessary they can be quickly bound with Inspector
- to a value “On boot” or “Continuously” without placing a new node with
- pulse source.
-* Boolean outputs are now allowed to be linked to pulse inputs directly. A
- change of value from `false` to `true` is considered to be a single pulse.
-* Patches now may include a long description with Markdown formatting and
- images. The description would appear on patch documentation page at
- http://xod.io/libs/.
-* Add patch properties to Inspector. It allows editing a patch description
- which once published would appear as a documentation string on
- http://xod.io/libs/.
-* Add project preferences dialog to set description, license, authors. They
- would appear on http://xod.io/libs/ as well.
+* Remove pulse pins in most nodes. They now react to changes of input values immediately without any help of pulse signals. This slightly shifts XOD paradigm toward more simple and casual. Check out updated [tutorial](https://xod.io/docs/tutorial/) to see how the change simplified programs.
+* Where pulses are still necessary they can be quickly bound with Inspector to a value “On boot” or “Continuously” without placing a new node with pulse source.
+* Boolean outputs are now allowed to be linked to pulse inputs directly. A change of value from `false` to `true` is considered to be a single pulse.
+* Patches now may include a long description with Markdown formatting and images. The description would appear on patch documentation page at http://xod.io/libs/.
+* Add patch properties to Inspector. It allows editing a patch description which once published would appear as a documentation string on http://xod.io/libs/.
+* Add project preferences dialog to set description, license, authors. They would appear on http://xod.io/libs/ as well.
* Add “Help” item to the main menu with links to the documentation and forum.
-* Sign distributives for Windows and macOS so that they no longer bark on you
- when you launch the installer.
-* Implement desktop IDE auto-update. Now you don’t have to download and install
- a new version of XOD manually. Existing version will check for updates and
- suggest upgrading with a single click once a new version would be available.
+* Sign distributives for Windows and macOS so that they no longer bark on you when you launch the installer.
+* Implement desktop IDE auto-update. Now you don’t have to download and install a new version of XOD manually. Existing version will check for updates and suggest upgrading with a single click once a new version would be available.
### Bug fixes
-* Fix silent error when trying to transpile a patch with patch nodes of 2+
- depth level. Now they work regardless of nesting level.
-* Fix silent error when trying to transpile a program with loops (graph
- cycles). Now a clear error message is shown if there a loop is found.
-* Fix Linux IDE failures on the first start. There were file permission
- problems which appeared as “Switch workspace directory” dialog appearing over
- and over again.
-* Get rid of errors and warnings on start related to React in the developer
- console.
+* Fix silent error when trying to transpile a patch with patch nodes of 2+ depth level. Now they work regardless of nesting level.
+* Fix silent error when trying to transpile a program with loops (graph cycles). Now a clear error message is shown if there a loop is found.
+* Fix Linux IDE failures on the first start. There were file permission problems which appeared as “Switch workspace directory” dialog appearing over and over again.
+* Get rid of errors and warnings on start related to React in the developer console.
+
## 0.10.1 (2017-06-28)
### Bug fixes
-* **Arduino**: Fix upload error when the latest version of Arduino IDE with the
- latest platform package installed in OS.
+* **Arduino**: Fix upload error when the latest version of Arduino IDE with the latest platform package installed in OS.
+
## 0.10.0 (2017-06-28)
Initial release
diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md
index 0f471884..e55ec673 100644
--- a/CONTRIBUTING.md
+++ b/CONTRIBUTING.md
@@ -1,19 +1,12 @@
-There are several ways you can contribute to XOD. This document is dedicated to
-contributing to code and issues. Other ways are described in the
-[Contributor’s guide](https://xod.io/docs/contributing/).
+There are several ways you can contribute to XOD. This document is dedicated to contributing to code and issues. Other ways are described in the [Contributor’s guide](https://xod.io/docs/contributing/).
## Improving issues
-Review the [issues](https://github.com/xodio/xod/issues) and use the GitHub
-reactions to show your attitude. Issues with most reactions take a higher
-development priority.
+Review the [issues](https://github.com/xodio/xod/issues) and use the GitHub reactions to show your attitude. Issues with most reactions take a higher development priority.
-Read the issues. If you see some flaws, inconsistencies, or ambiguities point to
-them in the issue’s comments.
+Read the issues. If you see some flaws, inconsistencies, or ambiguities point to them in the issue’s comments.
-See what’s coming next in the
-[milestones](https://github.com/xodio/xod/milestones) section. If an issue is
-already there, you have a final chance to say “no-oooo!”
+See what’s coming next in the [milestones](https://github.com/xodio/xod/milestones) section. If an issue is already there, you have a final chance to say “no-oooo!”
## Creating issues
@@ -21,69 +14,49 @@ Before creating an issue check if a similar issue already exists.
There are few categories of issues in the XOD GitHub repository:
-* [Bugs](https://github.com/xodio/xod/issues?q=is%3Aissue+is%3Aopen+label%3At%3Abug):
- things that are definitely broken;
-* [Features](https://github.com/xodio/xod/issues?q=is%3Aissue+is%3Aopen+label%3At%3Afeat):
- new functionality for end-users;
-* [Tweaks](https://github.com/xodio/xod/issues?q=is%3Aissue+is%3Aopen+label%3At%3Atweak):
- an inconvenient, annoying behavior that more looks like a bug than a missing
- feature;
-* [Refactoring](https://github.com/xodio/xod/issues?q=is%3Aissue+is%3Aopen+label%3At%3Arefactor):
- notes on code improvements without changes in functionality;
-* [Chore](https://github.com/xodio/xod/issues?q=is%3Aissue+is%3Aopen+label%3At%3Achore):
- repository building, testing, maintenance, and DX improvements.
+* [Bugs](https://github.com/xodio/xod/issues?q=is%3Aissue+is%3Aopen+label%3At%3Abug): things that are definitely broken;
+* [Features](https://github.com/xodio/xod/issues?q=is%3Aissue+is%3Aopen+label%3At%3Afeat): new functionality for end-users;
+* [Tweaks](https://github.com/xodio/xod/issues?q=is%3Aissue+is%3Aopen+label%3At%3Atweak): an inconvenient, annoying behavior that more looks like a bug than a missing feature;
+* [Refactoring](https://github.com/xodio/xod/issues?q=is%3Aissue+is%3Aopen+label%3At%3Arefactor): notes on code improvements without changes in functionality;
+* [Chore](https://github.com/xodio/xod/issues?q=is%3Aissue+is%3Aopen+label%3At%3Achore): repository building, testing, maintenance, and DX improvements.
-Classify issue you want to create in advance. If it’s more like a feature or an
-opinionated tweak, use XOD [forum](https://forum.xod.io) to discuss it.
-Features come from the [Roadmap](https://github.com/xodio/xod/wiki/Roadmap) and
-community brainstorms. GitHub issues are things to be scheduled, tracked, and
-implemented, they are *not* a place for discussions.
+Classify issue you want to create in advance. If it’s more like a feature or an opinionated tweak, use XOD [forum](https://forum.xod.io) to discuss it. Features come from the [Roadmap](https://github.com/xodio/xod/wiki/Roadmap) and community brainstorms. GitHub issues are things to be scheduled, tracked, and implemented, they are _not_ a place for discussions.
-New issues title and body should follow a common structure defined in
-[ISSUE_TEMPLATE](.github/ISSUE_TEMPLATE.md).
+New issues title and body should follow a common structure defined in [ISSUE_TEMPLATE](.github/ISSUE_TEMPLATE.md).
-To create a new issue fill in required sections from the issue template and
-delete sections irrelevant for this issue type.
+To create a new issue fill in required sections from the issue template and delete sections irrelevant for this issue type.
## Making changes in the code
-Generally, any change in code should be related to a concrete issue. The common
-pipeline to get your changes into the master branch is:
+Generally, any change in code should be related to a concrete issue. The common pipeline to get your changes into the master branch is:
-1. Create a new topic branch to work on the issue
-2. Write the code, do a series of commits
-3. Rebase on the `master`
-4. Test and lint the code
-5. Create a pull request to the `master`
-6. Wait for the code review, fix the code, rebase, force push
-7. Merge to the `master` and delete the topic branch
+1. Create a new topic branch to work on the issue
+2. Write the code, do a series of commits
+3. Rebase on the `master`
+4. Test and lint the code
+5. Create a pull request to the `master`
+6. Wait for the code review, fix the code, rebase, force push
+7. Merge to the `master` and delete the topic branch
These steps are described below in details.
### Creating a topic branch
-Any changes are delivered to XOD via pull requests. So any work should be done
-in a topic branch. Create a new branch like following:
+Any changes are delivered to XOD via pull requests. So any work should be done in a topic branch. Create a new branch like following:
$ git checkout -b fix-101-delete-empty-patch
Use `--` notation for the branch name.
-The type should reflect underlying issue category. Use one of: `fix` (bug fix),
-`feat` (user story implementation), `tweak`, `refactor`, or `doc`.
+The type should reflect underlying issue category. Use one of: `fix` (bug fix), `feat` (user story implementation), `tweak`, `refactor`, or `doc`.
Slug should shortly reflect the issue purpose.
-Do use hyphens, lower case letters and digits, do not use slashes or any other
-symbols.
+Do use hyphens, lower case letters and digits, do not use slashes or any other symbols.
### Writing code
-The code should follow some stylistic rules. These rules are based on
-[Airbnb JavaScript Style Guide](https://github.com/airbnb/javascript) with
-slight modifications and enforcements. See
-[ESLint configuration](./.eslintrc.js) for details. To verify your code follows
-the rules run:
+The code should follow some stylistic rules. These rules are based on [Airbnb JavaScript Style Guide](https://github.com/airbnb/javascript) with slight modifications and enforcements. See [ESLint configuration](./.eslintrc.js) for details. To verify your code follows the rules run:
$ yarn run lint
@@ -91,21 +64,15 @@ In addition to the style ensure that new functionality is covered by unit tests.
### Performing commits
-Try to keep changes granular. One commit is a single completed portion of an
-improvement. A commit, in general, should not break any tests or linting rules.
+Try to keep changes granular. One commit is a single completed portion of an improvement. A commit, in general, should not break any tests or linting rules.
-We use simplified
-[Angular](https://gist.github.com/stephenparish/9941e89d80e2bc58a153)-alike
-convention for commit messages. Subject line should have a form
-`: `, e.g.
+We use simplified [Angular](https://gist.github.com/stephenparish/9941e89d80e2bc58a153)-alike convention for commit messages. Subject line should have a form `: `, e.g.
fix(xod-fs): allow empty node lists to be loaded correctly
-The `` should be one of `fix` (bug fix), `feat` (new functionality),
-`tweak`, `refactor`, `doc`, or `chore` (general code maintenance).
+The `` should be one of `fix` (bug fix), `feat` (new functionality), `tweak`, `refactor`, `doc`, or `chore` (general code maintenance).
-The `` should be a name of a package affected by the change. If the
-change affects several packages, separate them with commas (no spaces).
+The `` should be a name of a package affected by the change. If the change affects several packages, separate them with commas (no spaces).
For the `` text:
@@ -117,8 +84,7 @@ Try to keep the whole subject line under 72 symbols.
### Rebasing on master
-To keep history clean we rebase topic branches rather than merge. Once you want
-to synchronize with the `master` going ahead do:
+To keep history clean we rebase topic branches rather than merge. Once you want to synchronize with the `master` going ahead do:
$ git checkout master
$ git pull
@@ -129,42 +95,28 @@ Follow Git hints to resolve any conflicts.
### Testing and linting changes
-There is a series of checks that should be passed for the code to have a chance
-to be merged into `master`. They are unit tests, linting and possibly other
-things.
+There is a series of checks that should be passed for the code to have a chance to be merged into `master`. They are unit tests, linting and possibly other things.
Run `yarn run verify` to make sure your code doesn’t break anything.
-The checks are performed by
-[Circle CI](https://circleci.com/gh/xodio/xod/tree/master) in any case, but
-ensuring your PR would not break anything in advance is a good habit.
+The checks are performed by [Circle CI](https://circleci.com/gh/xodio/xod/tree/master) in any case, but ensuring your PR would not break anything in advance is a good habit.
### Creating pull request
-Use GitHub interface to create a pull request from the topic branch to the
-`master` branch.
+Use GitHub interface to create a pull request from the topic branch to the `master` branch.
Fill in the proposed [PULL_REQUEST_TEMPLATE](.github/PULL_REQUEST_TEMPLATE.md).
### Reviewing and fixing
-We strive to review any PR in one day. To be approved a PR should sustain a
-review by at least one team member. Bigger PR’s are reviewed by at least two
-members.
+We strive to review any PR in one day. To be approved a PR should sustain a review by at least one team member. Bigger PR’s are reviewed by at least two members.
-Very likely, there will be code issues that should be fixed before the merge.
-We’ll try to describe them as friendly as possible. Fix the issues and add the
-commits to the same PR.
+Very likely, there will be code issues that should be fixed before the merge. We’ll try to describe them as friendly as possible. Fix the issues and add the commits to the same PR.
-It could also happen that the PR is no longer can be merged into the `master`
-automatically because the HEAD went ahead. In this case, rebase on master again
-and push with `--force`. Yes, you’ll rewrite a history, but as an author of the
-topic branch, you’re the king of your changes.
+It could also happen that the PR is no longer can be merged into the `master` automatically because the HEAD went ahead. In this case, rebase on master again and push with `--force`. Yes, you’ll rewrite a history, but as an author of the topic branch, you’re the king of your changes.
### Merging
Once the PR is good, it would be merged into the master branch.
-It’s better to delete the merged branch to keep the repository clean. Any new
-contributions related to the same topic may be performed by passing the whole
-pipeline again.
+It’s better to delete the merged branch to keep the repository clean. Any new contributions related to the same topic may be performed by passing the whole pipeline again.
diff --git a/README.md b/README.md
index e0179176..d5999f0e 100644
--- a/README.md
+++ b/README.md
@@ -1,22 +1,14 @@
-XOD
-===
+# XOD
-[](https://circleci.com/gh/xodio/xod/tree/master)
-[](https://ci.appveyor.com/project/xod/xod)
+[](https://circleci.com/gh/xodio/xod/tree/master) [](https://ci.appveyor.com/project/xod/xod)
-XOD is a visual programming language for microcontrollers. For documentation
-and downloads visit https://xod.io.
+XOD is a visual programming language for microcontrollers. For documentation and downloads visit https://xod.io.
-This repository contains sources for XOD language core, XOD IDE and XOD standard
-library. XOD documentation is in the [xod-docs](https://github.com/xodio/xod-docs)
-repository.
+This repository contains sources for XOD language core, XOD IDE and XOD standard library. XOD documentation is in the [xod-docs](https://github.com/xodio/xod-docs) repository.
-Development copy setup
-----------------------
+## Development copy setup
-We use [Yarn](https://yarnpkg.com/lang/en/) to run routine tasks on source
-files. Make sure it is available on your system. Clone the repository and set
-working directory to its root. Then run
+We use [Yarn](https://yarnpkg.com/lang/en/) to run routine tasks on source files. Make sure it is available on your system. Clone the repository and set working directory to its root. Then run
$ yarn
@@ -33,48 +25,39 @@ Open in your browser.
$ yarn build:electron
$ yarn start:electron
-Directory structure
--------------------
+## Directory structure
-The project is managed as a [Lerna](https://github.com/lerna/lerna) monorepo and
-split up in few directories:
+The project is managed as a [Lerna](https://github.com/lerna/lerna) monorepo and split up in few directories:
-- `packages/` — most of source code is here; navigate to a particular package
- to see it’s own `README` and get an idea what it is for
-- `tools/` — utility scripts to assist build process and routine maintenance
- tasks
-- `workspace/` — XOD standard library, default projects, and end-to-end
- fixtures
+* `packages/` — most of source code is here; navigate to a particular package to see it’s own `README` and get an idea what it is for
+* `tools/` — utility scripts to assist build process and routine maintenance tasks
+* `workspace/` — XOD standard library, default projects, and end-to-end fixtures
-Repository commands
--------------------
+## Repository commands
-You can run several commands on source files. They are available as yarn
-subcommands:
+You can run several commands on source files. They are available as yarn subcommands:
-- `yarn build` — build, transpile, pack all
-- `yarn build:electron` — build desktop IDE only
-- `yarn build:cli` — build CLI tools only
-- `yarn dev:browser` — run dev-version of browser IDE on localhost
-- `yarn dist:electron` — build OS-specific distributive of desktop IDE
-- `yarn test` — run unit tests
-- `yarn test-cpp` — run C++ code tests
-- `yarn test-func` — run functional tests
-- `yarn lint` — run the linter to check code style
-- `yarn verify` — build, lint, test; run this prior to a pull request
-- `yarn ci` — install & verify; CI-server uses this command
-- `yarn start:electron` — starts desktop IDE
-- `yarn start:spectron-repl` — starts functional tests environment
-- `yarn storybook` — starts React components viewer for visual inspection
-- `yarn clean` — remove build artifacts and installed `node_modules`
+* `yarn build` — build, transpile, pack all
+* `yarn build:electron` — build desktop IDE only
+* `yarn build:cli` — build CLI tools only
+* `yarn dev:browser` — run dev-version of browser IDE on localhost
+* `yarn dist:electron` — build OS-specific distributive of desktop IDE
+* `yarn test` — run unit tests
+* `yarn test-cpp` — run C++ code tests
+* `yarn test-func` — run functional tests
+* `yarn lint` — run the linter to check code style
+* `yarn verify` — build, lint, test; run this prior to a pull request
+* `yarn ci` — install & verify; CI-server uses this command
+* `yarn start:electron` — starts desktop IDE
+* `yarn start:spectron-repl` — starts functional tests environment
+* `yarn storybook` — starts React components viewer for visual inspection
+* `yarn clean` — remove build artifacts and installed `node_modules`
-Note that dependencies between tasks are not resolved. `test` and `start:*`
-expect that the project is already built.
+Note that dependencies between tasks are not resolved. `test` and `start:*` expect that the project is already built.
### Scoping
-Many commands (notably `build`, `dev`, `test`) support package scoping to
-save development time. To rebuild only `xod-project`:
+Many commands (notably `build`, `dev`, `test`) support package scoping to save development time. To rebuild only `xod-project`:
$ yarn build --scope xod-project
@@ -88,52 +71,28 @@ Those are standard [Lerna flags](https://github.com/lerna/lerna#flags).
`yarn test-func` runs automated end-to-end functional tests.
-You can set `XOD_DEBUG_TESTS` environment variable to keep IDE open on failure:
-`XOD_DEBUG_TESTS=1 yarn test-func`
+You can set `XOD_DEBUG_TESTS` environment variable to keep IDE open on failure: `XOD_DEBUG_TESTS=1 yarn test-func`
-Use `yarn start:spectron-repl` to run an interactive session and control the
-IDE window programmatically.
+Use `yarn start:spectron-repl` to run an interactive session and control the IDE window programmatically.
### Running C++ tests
-You need `avr-gcc` and [PlatformIO Core](http://platformio.org/get-started/cli)
-to be installed system-wide to run C++ code tests. They are available as OS
-packages for most platforms.
+You need `avr-gcc` and [PlatformIO Core](http://platformio.org/get-started/cli) to be installed system-wide to run C++ code tests. They are available as OS packages for most platforms.
-License
--------
+## License
Copyright 2017 XOD LLC.
-This program is free software: you can redistribute it and/or modify it under
-the terms of the GNU Affero General Public License, version 3, as published by
-the Free Software Foundation.
+This program is free software: you can redistribute it and/or modify it under the terms of the GNU Affero General Public License, version 3, as published by the Free Software Foundation.
-This program is distributed in the hope that it will be useful, but WITHOUT ANY
-WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A
-PARTICULAR PURPOSE. See the GNU Affero General Public License for more
-details.
+This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero General Public License for more details.
-You should have received a copy of the GNU Affero General Public License along
-with this program. If not, see .
+You should have received a copy of the GNU Affero General Public License along with this program. If not, see .
-As a special exception, the copyright holders give permission to link the code
-of portions of this program with the OpenSSL library under certain conditions
-as described in each individual source file and distribute linked combinations
-including the program with the OpenSSL library. You must comply with the GNU
-Affero General Public License in all respects for all of the code used other
-than as permitted herein. If you modify file(s) with this exception, you may
-extend this exception to your version of the file(s), but you are not obligated
-to do so. If you do not wish to do so, delete this exception statement from
-your version. If you delete this exception statement from all source files in
-the program, then also delete it in the license file.
+As a special exception, the copyright holders give permission to link the code of portions of this program with the OpenSSL library under certain conditions as described in each individual source file and distribute linked combinations including the program with the OpenSSL library. You must comply with the GNU Affero General Public License in all respects for all of the code used other than as permitted herein. If you modify file(s) with this exception, you may extend this exception to your version of the file(s), but you are not obligated to do so. If you do not wish to do so, delete this exception statement from your version. If you delete this exception statement from all source files in the program, then also delete it in the license file.
-Contributing
-------------
+## Contributing
-Feel free to contribute to the project! See the general [Contibutor’s
-guide](https://xod.io/docs/contributing/) and [GitHub contribution
-guidelines](./CONTRIBUTING.md).
+Feel free to contribute to the project! See the general [Contibutor’s guide](https://xod.io/docs/contributing/) and [GitHub contribution guidelines](./CONTRIBUTING.md).
-Jetbrains users can benefit from [XOD Jetbrains Live
-Template](tools/xod-jetbrains-live-template/xod-jetbrains-live-template.md).
+Jetbrains users can benefit from [XOD Jetbrains Live Template](tools/xod-jetbrains-live-template/xod-jetbrains-live-template.md).
diff --git a/packages/arduino-cli/README.md b/packages/arduino-cli/README.md
index 9cc0647e..903ab2ea 100644
--- a/packages/arduino-cli/README.md
+++ b/packages/arduino-cli/README.md
@@ -6,223 +6,230 @@ A javascript wrapper over the [arduino-cli](https://github.com/arduino/arduino-c
## How to use
-1. Install it with `npm install -S arduino-cli` or `yarn add arduino-cli`;
-2. Require in the code `import arduinoCli from 'arduino-cli';`
-3. Create an instance and pass the path to the installed `arduino-cli` and config:
- ```js
- const cli = arduinoCli('/bin/arduino-cli', {
- arduino_data: '~/arduino-cli/data',
- sketchbook_path: '~/arduino-cli/sketches',
- });
- ```
- It will create a config file for the `arduino-cli` in your OS temp directory and pass it to any command you'll call later.
-4. Then you can run commands, like this:
- ```js
- cli.version().then(console.log); // "0.2.1-alpha.preview"
- ```
+1. Install it with `npm install -S arduino-cli` or `yarn add arduino-cli`;
+2. Require in the code `import arduinoCli from 'arduino-cli';`
+3. Create an instance and pass the path to the installed `arduino-cli` and config:
+ ```js
+ const cli = arduinoCli('/bin/arduino-cli', {
+ arduino_data: '~/arduino-cli/data',
+ sketchbook_path: '~/arduino-cli/sketches',
+ });
+ ```
+ It will create a config file for the `arduino-cli` in your OS temp directory and pass it to any command you'll call later.
+4. Then you can run commands, like this:
+ ```js
+ cli.version().then(console.log); // "0.2.1-alpha.preview"
+ ```
## API
+
All commands runs asynchronously, so methods return `Promise`s.
### version()
-Returns the version of `arduino-cli`.
-Wraps `arduino-cli version`.
-- Returns `Promise`
+Returns the version of `arduino-cli`. Wraps `arduino-cli version`.
+
+* Returns `Promise`
### dumpConfig()
-Returns the current config of `arduino-cli` as a plain JS object.
-Wraps `arduino-cli config dump`.
-- Returns `Promise