Releases: xodio/xod
Releases · xodio/xod
0.20.1
Bug fixes
- [core] Fix resolving of abstract nodes nested deeply inside regular patches.
0.20.0
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
for0.000003
), infinity (+Inf
,-Inf
), andNaN
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 insetup()
.
(#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 genericxod/core/debounce
instead. - [nodes]
defer-*
are deprecated. Use genericxod/core/defer
instead. - [nodes]
gate-*
are deprecated. Use genericxod/core/gate
instead. - [nodes] BREAKING ❗ The original
gate
(without a type suffix) is
renamed toxod/core/branch
. - [nodes]
if-else-string
is deprecated. Use genericif-else
instead. - [nodes]
nth-number
is deprecated. Use genericnth-input
instead.
Bug fixes
0.19.2
0.19.0
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.
New nodes
0.18.1
Bug fixes
- [ide] Fix user-installed libraries not showing up when opening the project.
0.18.0
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.
New nodes
Bug fixes
- [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] 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 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
Bug fixes
- [ide] Fix help panel content overflow.
- [ide] Fix quick search help box text moire (best noticable on Windows).
- [ide] Fix background size for a view when no patches are open.
- [ide] Fix cursor shapes for various UI elements.
- [ide] Fix long lines truncation in the deployment log.
- [ide] Fix aliasing of IDE desktop icon on Windows.
0.17.0
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.
Bug fixes
- [nodes] Fix wrong description of
xod/core/pulse-on-false
(thanks @awgrover)
0.16.1
Features and enhancements
- [ide] Patch crafting optimized. Performance gain is ~35%
Bug fixes
- [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] In the account pane, send credentials on Enter press
0.16.0
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] Inserted comments are a bit wider by default.
- [core] BREAKING ❗ node C++ implementations are now read from files named
patch.cpp
. Formerany.cpp
andarduino.cpp
are ignored. A patch must includenot-implemented-in-xod
node to take it’s C++ implementation into account. - [core] BREAKING ❗ untitled pins changed numbering scheme. Instead of
IN_0, IN_1, IN_2, ...
andOUT_0, OUT_1, OUT_2, ...
, now they areIN1, IN2, IN3, ...
andOUT1, 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
xod/bits/bcd-to-dec
xod/bits/bitwise-and
xod/bits/bitwise-not
xod/bits/bitwise-or
xod/bits/bitwise-xor
xod/bits/dec-to-bcd
xod/bits/shift-left
xod/bits/shift-right
xod/common-hardware/dht2x-pack
xod/common-hardware/dht2x-thermometer
xod/common-hardware/dhtxx-read-raw
xod/common-hardware/ds1307-rtc-read
xod/common-hardware/ds1307-rtc-write
xod/common-hardware/sd-log
xod/common-hardware/text-lcd-16x2-i2c
xod/core/duty-to-time
xod/core/flip-n-times
xod/core/log-10
xod/core/log-bx
xod/core/log-e
xod/core/modulo
xod/core/saw-wave
xod/core/saw-wave-map
xod/core/sine-wave
xod/core/sine-wave-map
xod/core/square-wave
xod/core/time-to-duty
xod/core/timer
xod/core/tri-wave
xod/core/tri-wave-map
Bug fixes
- [core] Fix upload to Arduino Mega 2560 boards when compiling locally.
- [core] Fix yet more bugs related to invalid initial values after transpile.
- [ide] Fix possible single slot offset when placing nodes with a double-click.