Changelog#
1.9.11#
-
bug fixes
- range: value not properly updated with set()
-
misc
- (built-in client only) add
nofocus
client option to prevent the client window from taking focus unless a text input or a dropdown is clicked.
- (built-in client only) add
1.9.10#
-
bug fixes
- matrix: regression from 1.9.8 (broken nested @{} syntax in props property)
-
misc
- midi: detect missing binary (eg when deleted by antivirus) and print a message
1.9.9#
- bug fixes
- matrix: regression from 1.9.8
1.9.8#
-
bug fixes
- matrix: update children when
props
is modified even when the result for$ = 0
doesn't change - fragments: fragment widgets empty when reloading
- panel: scrollbar issue on iOS 13+
- matrix: update children when
-
scripting
- expose
console.clear()
- expose
1.9.7#
-
bug fixes
- issue when resizing widget using keyboard shortcuts
- advanced syntaxes (VAR{}): avoid storing default value as string if it can be parsed as a javascript primitive (boolean, number, etc)
- advanced syntaxes (VAR{}): ignore quotes around variable name
-
editor
- change keyboard shortcuts for moving widgets (now
mod + arrows
) and navigating in widgets (nowarrows
) to feel more natural with the project tree view.
- change keyboard shortcuts for moving widgets (now
-
widgets
- script: bypass keyboard shortcuts already used by the editor if it is enabled
- matrix: removed ambiguous
start
property - matrix: advanced syntax blocks can be passed to children without being resolved at the matrix\' scope by adding an underscore before the opening bracket
- text: add
soft
mode for thewrap
property - input: improve
numeric
mode on iOS
1.9.6#
-
bug fixes
- advanced syntaxes:
VAR{}
not updating when the default value is edited - editor: fix "Bring to front" and "Send to back" context menu actions
- advanced syntaxes:
-
ui
-
add keyboard shortcuts
mod + "+"
andmod + "-"
to control zoom level -
widgets
- input: add
numeric
property (allows numeric values only and displays numeric keyboard on mobile devices) - button: add
soft
mode for thewrap
property - switch: add
wrap
property
- input: add
-
editor
- display dropdown and checkbox for boolean properties with extra choices
1.9.5#
-
bug fixes
- advanced syntaxes: various isses and regressions
- editor: preserve advanced syntaxes in
left
andtop
when pasting a widget
-
editor
- tree: update widget visibility when it changes dynamically
1.9.4#
-
bug fixes
- prevent error with empty
OSC{}
blocks - regression breaking advanced syntax blocks containing nested brackets
- prevent error with empty
-
advanced syntaxes
- new syntax for creating and using custom variables in properties:
VAR{name, default}
JS{}
blocks don't require 2 brackets anymore (JS{{}}
still works)
- new syntax for creating and using custom variables in properties:
-
scripting
- add
getVar()
andsetVar()
for reading and modifying custom variables. This allows modifying properties directly from scripts (if they containVAR{}
blocks). - expose session path as
globals.session
- add
-
editor
- make tree item blink when hitting "Show in tree"
-
remote control
- add
/SCRIPT
command to run scripts remotely
- add
1.9.3#
-
bug fixes
- scripting: set() not working from a slider to a pad
- tabs not sending messages / triggering scripts when clicked in editing mode
- prevent hang with some syntax errors in advanced syntaxes
- don't show project tree if minimized when creating a new widget (1.9.2 regression)
- fix "ID + 1" paste for widgets with numeric ids
- dropdown: reset the underlying dropdown when the widget's value is undefined
-
editor
- tree: allow specifying multiple type filters
- tree: add "Show in session" context menu action
1.9.2#
-
bug fixes
- visualizer: remove
bars
anddots
option - plot: fix
bars
option - project tree: clear filter input when loading a session
- server: fix serving files from paths containing accents
- editor: keep editor open when loading a session
- menu: prevent clipping in container on iOS
- visualizer: remove
-
widgets
- image: add pre defined values for
size
,position
andrepeat
properties - text: add vertical alignment choices to
align
- image: add pre defined values for
-
editor
- tree: add icons before widget ids depending on the category
- tree: activate tab when selecting it in the project tree
- tree: allow dragging widgets from a container to another
- tree: expand container when a new widget is created inside it
- tree: add support for filtering widgets by type (by typing
type:fader
for example) - smarter shift+drag selection: allow selecting widgets in the area when the event started on the parent container
- select newly created widgets/tab except when copy-pasting
-
remote control
- add
/STATE/SEND
command
- add
1.9.1#
-
bug fixes
- button: allow writing strings like
"1.0"
inlabel
without removing the decimals - editor: use css variable
--grid-width
at startup and after disabling & enabling the grid - launcher: regression preventing server halt when built-in client is closed manually beforehand
- scripting: prevent crash (built-in client only) when using the variable
navigator
- button: allow writing strings like
-
widgets
- menu/switch/dropdown: reset value to
undefined
when receiving a value that's not defined invalues
- menu/switch/dropdown: reset value to
-
scripting
- expose instance of navigator Clipboard as
globals.clipboard
- expose instance of navigator Clipboard as
-
midi
- allow sending note off with velocity
- add option for receiving note off with velocity
-
misc
- v0->v1 session conversion: remove
JS{{}}
in script property
- v0->v1 session conversion: remove
1.9.0#
Warning Sessions saved with this version will not open in older versions (sessions saved with older version will open in this version).
-
bug fixes
- remote-root option not applied on resources loaded by the client app (css images, etc)
- input: display issue when resizing the window
- launcher: cancel stopping the server when there are unsaved changes in the built-in client
-
editor
- context menu: add
export
action to export a widget as a fragment file - show project tree if minimzed when clicking on "Show in tree"
- context menu: add
-
widget
- new
fragment
widgets (undercontainers
): embedded session or fragment file with overridable properties. - add
comments
property to all widgets
- new
-
launcher
- add
Always on top
menu toggle
- add
1.8.15#
-
bug fixes
- editor: error when duplicating widget while if the clipboard is empty
- ui: local zoom move issue when not in fullscreen
- custom module:
clearInterval()
not working - regression breaking style attribute in html property
-
misc
- faster local zoom
1.8.14#
-
bug fixes
alt+shift+c
not working when pressed before dragging- incremental pasting issue with address property
- generate scrollbars for panels on iOS 13+
- fix scrolling on chrome for iOS 13+
-
editor
- add
mod+d
andmod+shift+d
for duplicating widgets - use a temporary clipboard when duplicating widgets
- add
-
misc
- inspector: move
script
property toscripting
category - ui: minor style tweaks
- inspector: move
1.8.13#
-
widgets
- file: show save icon when mode is set to save
- file: center icon when hidePath is set to true
- sliders/pads: apply
spring
property dynamically
-
ui
- add
alt
+wheel
for local zoom centered on cursor
- add
-
editor
- add
alt+c+drag
andalt+shift+c+drag
for duplicating dragged widgets
- add
1.8.12#
-
bug fixes:
- project tree: filter input position issue when scrolling
- sliders/pads: apply
spring
property dynamically
-
project tree
- select range of contiguous widgets with shift + click
-
misc
- plot: remove unused
filters
property; fix description forrangeX
andrangeY
- console: focus input when the console opens
- plot: remove unused
1.8.11#
-
bug fixes
- switch: widget not reacting at first touch when traversing is enabled on parent
- sliders: disable mousewheel when
spring
is enabled
-
widgets
- script: add
once
event mode - encoder: remove
spring
property
- script: add
-
custom module
- expose
process
global
- expose
-
scripting
- add
openUrl
function
- add
1.8.10#
-
bug fixes
- modal: issues with children's visibility
- console: allow multiple arguments in console.log()
-
ui
- launcher: add many keyboard shortcuts
- client: add keyboard shortcuts for clearing the console
-
scripting
- add
setFocus
function to focus an input widget programmatically
- add
-
misc
- add
usePercents
client option
- add
1.8.9#
- bug fixes
- script: issue when using the
options
argument inset()
(options leaked to subsequent set() calls in the script) - multixy:
decimals
property not applied - multixy: spring behavior not working until all points are released
- custom module: prevent require() from reading submodules files each time and instead return the object in memory
- script: issue when using the
1.8.8#
-
launcher
- add file browser button for the
theme
option and fix parsing path containing spaces if only one theme is set
- add file browser button for the
-
windows
- remove
ctrl+w
shortcut for closing a window (usealt+f4
instead)
- remove
1.8.7#
-
midi
- add active sensing messages support (received as sysex)
-
remote control
- restore
/TABS
command (for opening tabs by ids)
- restore
-
widgets
- encoder: expose rotation speed in script (as
locals.speed
)
- encoder: expose rotation speed in script (as
1.8.6#
- bug fixes
- range: per-fader touch event not emitted properly
- rgb: fix
spring
property - rgb: touch event not emitted
1.8.5#
- bug fixes
- midi: debug messages displayed as errors
- launcher: broken context menu
1.8.4#
-
bug fixes
- input: prevent focus when selecting the widget for edition
- input: submit content when leaving focus, not only when hitting
enter
ortab
(esc
still cancels) - midi: prevent midi bridge from stopping when an error occurs; provide meaningfull errors when connection fails
-
editor
- inspector: hitting ctrl+s while editing a property will submit the change before saving
-
ui
- hide the console toggle button when the bottom panel is minimized and the editor is disabled
-
widgets
- file: add
mode
property, for choosing betweenopen
andsave
modes - switch: add
flip
mode
- file: add
1.8.3#
-
bug fixes
- keyboard: allow note numbers up to 127
- server: return http 404 error when a user-requested resource is not found instead of keeping a pending request
- modal:
visible
property not applied correctly
-
project tree
- add an input for filtering displayed widget by id
1.8.2#
-
bug fixes
- menu: allow manual line breaks ("
\n
") in labels / values - custom module: parsing issue when sending widget data using
receive()
(type
attribute errouneously parsed as an osc typetag)
- menu: allow manual line breaks ("
-
widgets
- html property: allow "href" attribute on "a" elements
1.8.1#
- bug fixes
- script: stops triggering osc messages under some circumstances
1.8.0#
-
bug fixes
- project tree: layout issue with deeply nested widgets
- ios 10.3 regression
- file browser: layout issue with long paths
-
custom module
- add
nativeRequire
function (allows loading native node modules or locally installed moduled)
- add
1.7.8#
-
bug fixes
- canvas-based widgets not drawn when placed in a modal while having a conditional visibility set
- text: missing
decimals
property - clone: fix usage of osc listener syntax (acts as if clone has an
address
property set toauto
)
-
widgets
- clone: make
props
property dynamic (avoid full widget rebuild when possible)
- clone: make
-
misc
- increase client console history size and allow changing it with client url options
1.7.7#
- bug fixes
- startup regression
1.7.6#
-
bug fixes
- (harmless) error raised when starting the server from the launcher with
debug
set totrue
- (harmless) error raised when starting the server from the launcher with
-
editor
- display/save color picked values with css rgba notation instead of hexadecimal
-
widgets
- modal: add
ignoreTabs
option (allows overflowing tab ancestors) - menu: add
ignoreTabs
option
- modal: add
1.7.5#
- bug fixes
- ios: cloned menu not displayed correctly
- engine: downgrade to fix startup issue on windows
1.7.4#
- bug fixes
- editor: cloned
dropdown
andinput
widgets not opening when selected - widgets: prevent value-stateless widgets (tap buttons, clone, scripts, html and svg) from sending a value for cross-client synchronization (leads to unexpected script execution) and exclude them from state saves
- input: apply
decimals
number before checking the value against thevalidation
expression - range:
steps
anddashed
property not working; removeorigin
property - config conflicts between launcher and server (affecting at least session history)
- editor: cloned
1.7.3#
-
bug fixes
- custom module / theme: prevent reloading the module while the file is being written to
- server: if a theme is used, attempt to resolve image urls against the theme file's location
- modal/button: prevent error when
label
is updated
-
widgets
- encoder: add
ticks
property back
- encoder: add
1.7.2#
- bug fixes
- midi: mtc parsing error
- custom module: hot reload cache issue on windows
1.7.1#
- bug fixes
- regression causing server errors
1.7.0#
Important change
Prebuilt binaries are now supplied only for 64bit Linux/MacOs/Windows. Other platforms should use the node
package or build it from sources.
MIDI support
As of this version, packages except the node
package are bundled with a midi binary that will be used whenever midi's path
option is not set. It is no longer necessary to install python
and python-rtmidi
.
Changelog
-
bug fixes
- editor: missing context menu (copy, paste) in inspector inputs
- widgets: osc listeners not resolving "auto" address
- cli:
ELECTRON_RUN_AS_NODE
headless mode not working without--no-gui
option - ios: clone widget not laid out properly in horizontal panels
- ui: missing vertical scrollbar when root's height overflows the workspace
- server: provide readable error when a file requested by the client file is not found
- tab: content not drawn when changing visible property
- matrix: addresses not generated property when matrix' address is
auto
-
ui
- add console bottom panel with a simple script interpreter
-
widgets
- keyboard: add
velocity
property (allows mapping the touch coordinates betweenoff
(top) andon
(bottom)) - input: add
validation
property (allows defining a regular expression that the value must match) - modal: add
relative
position property
- keyboard: add
-
midi
- accept sending sysex strings without spaces between the bytes
- load prebuilt midi binary on 64bit linux/windows/osx
- add support for midi time code messages
-
misc
- sessions converted from v0 will use the widget's html property to display the former label property
1.6.2#
- bug fixes
- matrix: issues when changing non-dynamic properties (content not properly removed)
- input: apply default value when receiving an empty value or no value at all
1.6.1#
-
bug fixes
- keyboard: prevent
script
property from being copied to each key
- keyboard: prevent
-
widgets
- keyboard: make
on
andoff
properties dynamic - script: add
getIndex
function - matrix/keyboard:
id
variable in script is now theid
of the child widget that triggered the event
- keyboard: make
1.6.0#
-
bug fixes
- range: error when setting
default
property - range: fix
doubleTap
property
- range: error when setting
-
widgets
- all: add
html
property to allow inserting custom content in widgets (label, value, etc) and style it with thecss
property.
- all: add
-
scripting:
send()
: ignore the widget'sbypass
property (allows bypassing default messages and define custom ones)set()
: add supports for wildcards in the id parameterset()
: add a 3rd optional parameter for preventing further script executions and/or osc messages from being sent
-
custom module
- automatically reload custom module when the file is modified
- add support for loading submodules with
require()
-
theme
- automatically reload theme when the file is modified
1.5.4#
-
bug fixes
- ssl: generate unique certificates (with random serial numbers) to avoid reuse errors. Certificates generated with older versions of o-s-c will be updated automatically.
~/
path prefix not recognized when using remote control commands like/SESSION/SAVE
~/
path prefix not recognized inremote-root
option- editor: paste ID+1: midi-related addresses should not be incremented
-
remote control
- add
/STATE/OPEN
and/STATE/SAVE
commands - ignore unsaved changes when loading a session with
/SESSION/OPEN
- resolve relative file paths against
remote-root
setting
- add
1.5.3#
- bug fixes
- editor: error when
preArgs
andaddress
are modified at the same time (affects/EDIT
command and matrix/clone widgets)
- editor: error when
1.5.2#
-
bug fixes
- launcher: midi device names containing multiple spaces not parsed correctly
- fullscreen: lack of support not detected on some ios devices
- multixy: labels not hidden when
ephemeral
istrue
-
remote control
- add
/SESSION/OPEN
and/SESSION/SAVE
commands
- add
1.5.1#
-
bug fixes
- widgets: touch state scripts not triggering some synchronization mechanism
-
widgets
- encoder: remove
steps
,ticks
andorigin
properties - encoder: make
sensitivity
work with values below 1
- encoder: remove
1.5.0#
-
bug fixes
- image: broken value validation
- menu/dropdown: use correct z-index
- dropdown: prevent dropdown from opening when selecting the widget for edition
-
editor
- holding
alt
extends the north-west handle to the widget's size to ease dragging - widget properties reordered (e.g. style-related properties, even widget-specific, are now under the "style" category)
- holding
-
widgets
- remove
colorBg
for all widgets except containers - widgets background color is now transparent by default (can be overridden with css)
- keyboard: added
colorBlack
andcolorWhite
properties to customize key colors - dropdown/menu: add
label
property (with support easy key/value display) - dropdown/menu: add
icon
toggle property - modal: add
popupPadding
property to control the button's and the container's padding independently
- remove
1.4.1#
- bug fixes
- multixy/range: prevent some extra touch state events;`
1.4.0#
-
bug fixes
- project tree: error when dropping a widget at its initial position
-
editor
- validate property change when clicking on a widget
- cancel property change when hitting escape
- add menu and keyboard shortcuts to reorder widgets
- add keyboard shortcut to show widget in project tree
- selected widget is not showed on top of the others anymore
-
widgets
- expose widgets unique identifiers with property name "uuid"
- xy/multixy: add
ephemeral
property - fader/knob/xy/range/multixy: remove
touchAddress
property - fader/knob/xy/range/multixy: expose touch state in
script
property (touchAddress
usages will be converted automatically)
1.3.0#
-
bug fixes
- editor: hide impossible actions from context-menu (eg adding widgets in tab containers)
- editor: error when selecting a tab/root widget while a property field contains unsubmitted changes
- panel: layout issue with tabs & lineWidth property
- input: extend focusable area
-
midi
- remove variable args in sysex messages (dynamic properties and scripting can be used to this effect)
- add support for sending sysex bytes as integers
- allow sending any system message (eg MIDI time code)
- add support for receiving MIDI time code messages (as raw sysex) (requires adding the
mtc
flag to the midi configuration)
1.2.1#
-
scripting
- expose toolbar menu actions
-
remote control
- optimise small changes made with /EDIT
-
widgets
- button: add
wrap
andvertical
properties - root: add
width
andheight
properties (helps building mobile layouts)
- button: add
1.2.0#
-
bug fixes
- editor: id not incremented when pasting multiple widgets with id+1
-
main
- remove support for extra args in the
custom-module
option (fixes some path issues)
- remove support for extra args in the
-
widgets
- all: add
lineWidth
style property - knob: add
solid
&line
designs - fader: add
knobSize
property
- all: add
-
editor
- preserve percentages in position/size
- add 'Relative units (%)' option to use percents automatically on new widgets
1.1.0#
-
bug fixes
- iOS 14+ scrolling issue
-
midi
- add support for channel pressure and key pressure messages
-
widgets
- svg: remove support for non-standard
%x
and%y
units; fixed layout update when resized; - knob: add support for custom dash/gap size in
dashed
property
- svg: remove support for non-standard
1.0.4#
- bug fixes
- script: broken
storage.getItem
andstorage.removeItem
- regression breaking
remote-root
option when starting with the launcher
- script: broken
1.0.3#
-
bug fixes
- modal: layout issue on iOS
-
widgets
- panels: added
contain
property to allow scrolling in vertical/horizontal layouts
- panels: added
-
midi
- add support for named ports in midi configuration
1.0.2#
- bug fixes
- broken scrolling on iPhone iOS 13
- window geometry issue
1.0.1#
- UI
- windows' dimensions and position are now saved upon closing and restored at startup
1.0.0#
This list is not exhaustive
-
compatibility
- dropped support for iOS 9
- firefox (75+) support
-
UI
- overhaul design reworked
- foldable sidepanels
- removed lobby
- added toolbar menu
- dispay loading (spinner) in a notification instead of a modal
- mod + w to close window
- context-menu now use click event to trigger actions, not mousedown/touchstart
- no more uppercase text by default
-
themes
- built-in themes removed except
orange
- built-in themes removed except
-
translations
- incomplete russian translation removed
-
editor
- project tree
- dropdown for properties with multiple choices
- color picker
- preview numeric values for style-related properties set to auto
- context menu: added "show in tree" action
- context menu: removed "edit parent" action
- allow copying tabs (to tab containers only)
- shared clipboard accross all clients
- prevent interaction with widgets when
shift
orctrl
is held - ensure @{} bindings are always updated upon edition
-
widget changes
- all: removed
label
option except for buttons, tabs and modals (one should usetext
widgets if needed) - all: removed support for
null
and"self"
targets - all: added
ignoreDefaults
property (allows ignoring the server's default targets) - all:
precision
property todecimals
, don't set osc integer typetag when 0 - all: added
typeTags
property - all: multiple style properties to control visibility, colors, alphas and padding
- all: added
interaction
(=> csspointer-events: none;
) - all: added
expand
(=> cssflex: 1;
) - all: prevent html tags in label
- pads: removed
split
property -> use custom-module or script instead - root: can contain widgets or tabs
- panels: added
layout
,justify
andgridTemplate
to help managing layouts (especially responsive ones) - panels: added
verticalTabs
property - panels: added
traversing
property, allow restrictingtraversing
to a specific widget type - fader: removed
input
- fader: removed
meter
- fader: added
gradient
- fader: added
round
design style - fader: support setting dash size and gap size in
dashed
property - switch: added
layout
(including grid) - switch: added
click
mode - plot/eq: removed
smooth
- plots/sliders/pads: reversed
logScale
behavior to match standard implementations; can be eitherfalse
(disabled),true
(logarithmic scale) ornumber
(manual log scale, negative for exponential scale) - visualizer: added
framerate
property - visualizer: added
freeze
property - menu: always centered menu
- modal: modals can't overflow parent tab boundaries
- input: removed
vertical
- pads, range: when
touchAddress
is set, one message per touched point is sent, in addition to the former touch state message - eq: removed
logScaleX
property, always draw logarithmic frequency response - eq: logarithmic x-axis scale fixed
- eq: filters ared now defined with the
filters
property, leaving thevalue
to its default purpose - eq: added
rangeX
- html: allow
class
,title
andstyle
attributes - dropdown: close menu when receiving a value
- dropdown: removed empty 1st option
- switch: removed
showValues
(inconsistent with menu/dropdown, feature covered byvalues
property) - frame: allow loading non local urls
- all: removed
-
widget removals
push
,toggle
: merged intobutton
strip
: features now covered bypanel
meter
: duplicate offader
withdesign
tocompact
andinteraction
tofalse
switcher
,state
,crossfader
: removed => state managment functions added to thescript
widgetkeys
: merged withscript
gyroscope
: not compatible since chrome 74 unless o-s-c goes HTTPS
-
remote control
- removed /TABS
- added /NOTIFY
-
scripting (general)
- removed MathJS language
- reuse #{} syntax as as shorthand for JS{{}} (one liner, implicit return)
- added
locals
variable, a variable store scoped to the widget - renamed
global
toglobals
- expose environment variables in
globals
:url
,env
(query parameters),platform
,screen
(width/height)
-
script widget
- always hidden except in project tree
script
property must not be wrapped in a JS{{}} block anymore- added
stateGet
andstateSet
functions - added
storage
object, proxy to the document's localStorage object (allows storing data that persist after refresh/close (cleared with the browser's cache) - added
setTimeout
,clearTimeout
,setInterval
,clearInterval
function proxies with an extraid
argument (they clear automatically when called multiple times and upon widget removal.id
is scoped to the widget)
-
state
- quickstate (store/recall from menu) is now stored in the clients cache and persists after refresh/close (cleared with the browser's cache)
-
custom module
settings.read(name)
:name
is now the long name of command-line options (not a camelCased one)receive()
: optional last argument to pass extra options such asclientId
- client id persist upon page refresh and can be set manually with the client url option
id
-
launcher
- config save/load
- allow starting/stopping server without rebooting
- syntax check on
--midi
option
-
server
- renamed
--url-options
to--client-options
and make them apply even in remote browsers (can be overridden with url queries) - removed
--blank
,--gui-only
,--examples
- hide
--disable-gpu
(cli-only) - added cli-only
--cache-dir
and--config-file
- added
--authentication
option - added
--use-ssl
option
- renamed
-
misc
- canvas: better visibility checks to avoid unnecessary draw calls
- visualizer: perf improvement (avoid data processing when not visible), all visualizers hook on the same loop to avoid concurrent timeouts
- button: in 'tap' mode (formerly push with
noRelease
), never send/syncoff
value, automatically reset tooff
when receivingon
- more detached DOM for lighter nested canvas widgets (ie multixy)
- unified (kind of) dom html structure for widgets, known css tricks will require adjustments.
- cache and config files are now stored in a folder named
open-stage-control
(located in the system's default location for config file). The.open-stage-control
is no longer used. - added support for icons rotate/flip transform suffixes (example:
^cog.spin
,^play.rotate-horizontal
)