====== Release Notes ====== These release notes list notable changes in each version of Blocks. The latest version can be [[blocks:downloads|downloaded here]]. See the [[http://pixilab.se/outgoing/blocks/PIXILAB-Blocks.pdf|Blocks Manual]] for more details. =====PIXILAB Blocks 7===== This major version of Blocks was released on October 22, 2024 NEW FEATURES * **Timeline**: New block type (see chapter 10 in the [[http://pixilab.se/outgoing/blocks/PIXILAB-Blocks.pdf|Blocks 7 manual]]). * **PIXILAB Player**: Supports PIXILAB Player version 7, providing improved performance. * **Panorama**: Video can be used as the background (see Panorama in the manual). * **Panorama**: Allows use of most child block types – not just Button. * **Panorama**: Buttons and chile blocks can be placed "flat on the ground". * **Transition**: New Wipe transition. ===Minor Improvements and Bug Fixes=== * **Spot**: Avoid scaling jump when transitioning between blocks with different size. * **Scripting**: SimpleHTTP adds HEAD request and file download functionality. * **Feed**: Reloading a Spot now always reloads any Feed data as well. =====PIXILAB Blocks 6.3.3===== Released on Sep 4, 2024, this version contains some minor new features and improvements/bug fixes. ===New Features=== * **Live Video**: Now supports "Dynamic URL" property binding. * **Live Video**: Adds "Source Stream Timeout" setting for RTSP stream. * **Slideshow**: Adds "Pause without Stopping" option. * **Text Input**: New "autofocus" checkbox to enable immediate text entry. ===Improvements and Bug Fixes=== * **Block Caching**: Indication of caching errors in Editor. * **Block Caching**: Fixed "stuck" caching (arrow spinning indefinitely). * **CSS**: Adds 'class' query parameter also to the editor (similar to Spot's). * **Configuration**: defaultSpotCSS now applies in Editor also when not editing a block. * **Visitor Spot**: Diacriticals (umlauts) in spot path now work as expected. * **Book**: Fixed a touch-to-swipe problem in Book nested inside other Book. * **Config**: Starting without config file works as expected, using all defaults. * **Status pages**: Report disk/memory space with decimal. * **Serial Port**: The connected property now becomes false if the USB device is unplugged. * **Live Video**: Bumped stream timeout from 20 seconds to 3 minutes to handle slow sources. * **Display Spot**: Indicate "preferred sync master" in Spot list details view mode. * **Scroller**: Maximum time to scroll to target increased from 60 to 500 seconds. * **Scroller**: Nested perpendicular scrollers didn't work as expected. =====PIXILAB Blocks 6.3.2===== Released on May 10, 2024, this version contains important bug fixes and some minor enhancements. ===New Features=== * **ArtNet Recording**: Adds 'time' property, usable as a sync source during playback ===Improvements and Bug Fixes=== * **ArtNet**: Fixes a rare deadlock (introduced in version 6.3) that could cause Blocks to become unresponsive. * **Media URL**: Video and Audio media work again. * **Attractor**: Passive child can now be paused by Spot's //playing// property. * **Manage, Server Status**: Shows maximum free memory rather than currently free. =====PIXILAB Blocks 6.3.1===== Released on April 17, 2024, this version contains minor enhancements and bug fixes. ===New Features=== * **Behavior**: New Navigate behavior, for child navigation inside Book or similar. * **Modbus**: Channels can now be named, then replacing the default "chXX" name. * **Modbus**: New setting for maximum number of outstanding transactions. * **Dynamic Text**: New 'freq' parameter controls time update frequency, in Hz. * **Scripting**: Spot API adds fixedTagSet getter for statically assigned tags. ===Improvements and Bug Fixes=== * **Spot**: Spot requiring authentication failed to connect. * **Property**: Enum properties now work as expected with Button and Indicator. * **Controls**: Visual indication if a control fails due to insufficient user role. * **Dynamic Text**: The 'fixed' parameter can be applied also to time value. * **Media URL**: Apply any custom CSS class to wrapper only – not to inner element. * **WATCHOUT**: getControlCues now always fetch data anew, bypassing current show cache. * **CSS**: The 'pressed' class now also applied to Slider & Joystick (like Button). * **Book**: Swipe to flip page now works also inside vertical Scroller. =====PIXILAB Blocks 6.3===== Released on February 20, 2024, this version brings numerous new features, enhancements and bug fixes. ===New Features=== * **Art-Net**: Art-net Recording and Playback, including synchronization. Requires license. * **Display Spot**: Supports Samsung Smart Signage based on Tizen version 7. * **WATCHOUT**: Can now control Dataton WATCHOUT version 7 production software. * **Behaviors**: New behaviors; Blur, Brightness, Contrast, Grayscale, Hue, Saturation, Sepia. * **Behaviors**: Fixed value applied for most behaviors if no property binding. * **Integrations**: LTC Timecode (EBU/SMPTE) synchronization (driver + linux software). * **Transition**: Adds "Custom CSS" transition type. * **Tag Selector**: Block transition can be applied when switching tags. * **Realm Variable**: Can now be set from the UI. * **Block Caching**: Spot's own keyPress, keyCode and scannerInput properties now usable offline. ===Minor Improvements and Bug Fixes=== * **Behaviors**: Categorized into Appearance, Detection, Function and Transform. * **Attractor**: Checkbox controlling whether Attractor activates when Spot becomes active. * **Integrations**: RSS Feed support (feed script). * **Offline**: Message shown briefly when about to start offline playback. * **Scripting**: Properties support Enumerated data type. * **Task**: An error in the first statement of a Task running on interval could cause a crash. * **Indicator**: Incorrect state when bound to text with a blank match value. * **WebBlock**: Allow direct Blocks API access also cross-origin. * **Live Video**: Selects corresponding audio source if specifying USB capture index. * **Live Video**: Better sound quality for USB capture on recent Chrome versions. * **SimpleImage**: Fixed incorrect rotation for images taken with some Samsung phones. * **Scripting**: The address and addressString Serial driver properties now work as expected. * **Scripting**: Improved reliability of hot reloading (config watchFiles: true). * **Scripting**: SimpleHTTP relax response mediatype detection to recognize rss+xml as xml. =====PIXILAB Blocks 6.2===== Released on November 24, 2023, this version brings numerous new features, enhancements and bug fixes. ===New Features=== * **Slideshow, Book**: Graphical "current position" indicators can now be enabled. * **Behavior**: Set of classes applied by Classify can be dynamic, specified by property. * **Locator**: Can now also be closed by explicit Button Action. * **Live Video**: Added setting for favoring either fast or temporally accurate start. * **Display Spot**: Added Transition Delay setting for switching blocks. * **Display Spot**: New tagSet property (read-only), listing all applied tags. * **Display Settings**: Added Note field for user comments. * **Device Drivers**: New driver for controlling and synchronizing to AvStumpfl PIXERA. ===Minor Improvements, Changes and Bug Fixes=== * **Behavior**: Multiple Classify behaviors on same block now work additively. * **Video**: Don't flash Pause symbol in Auto mode when used in slideshow or similar. * **CSS Editor**: APPLY button restored. * **Scripting**: New Spot setDefaultBlock() function specifying which block to cache. * **Block Scheduler**: Copy/Paste now supported for layers and block entries. * **Web Block**: Changing URL dynamically no longer affects browser history. * **ArtNet**: Use config's defaultNetwork if nothing specified for artnet.bindToAddress. * **ArtNet**: Made fixture Duplicate command work again. * **Network Device**: Allow UDP receive-only drivers (without send-to address/port). * **Synchronizer**: Fixed a time glitch when switching Synchronizers with a transition. * **Synchronizer**: Expedite start of synchronization targets and improve accuracy. * **MQTT Network Devices**: Now supports "retained" outgoing messages. * **Child Replication**: Fixed missing data when returning from deeply nested content. * **Tags**: CSS classes tag-XXX (matching current tag set) hoisted to #theDisplay element. * **Tag Selector**: Editor background checkerboard brightness now configurable. * **Serial drivers**: Could fail to send data after a Display Spot power cycle. * **PIXILAB Player**: Identity based on first NIC's rather than live NIC's MAC addr. * **Spot power**: Property feedback now indicates current state if wanted state never set. * **Audio Media**: Incorrect placement of play button, making it hard to access. * **Audio Media**: Failure to start synchronized playback from camera QR code on iOS. * **SimpleImage**: Fixed a JPEG exif-rotated image cropping problem. * **PIXILAB Player**: Improved reliability in configuring display/touch settings. * **Scripting**: SimpleHTTP 401 error resolves with status and headers instead of rejection. :!: **NOTE**: The identity of PIXILAB Player is now based on the primary network interface's MAC address rather than the active interface's MAC address. The advantage of this method is that the identity of the player will remain the same even if you switch network interface (e.g., using both wired and wifi). However, if you previously used another network interface than the primary one, the player's identity may change when you update to Blocks 6.2, and you will then need to re-assign it. Players using a wired connection (with a single Ethernet jack) shouldn't see any need to re-assign their identity. Nor players that aren't based on our PIXILAB Player software, or where other means are used to identify the player. =====PIXILAB Blocks 6.1===== Released on August 25, 2023, this version brings numerous new features, enhancements and bug fixes. ===New Features=== * **Media Block**: Adds "Pause without Stopping" with associated "Auto-stop after" delay. * **Attractor**: Adds "Auto-play on Active" checkbox (default is true, as before). * **Attractor**: Now usable with single child, which remains visible when spot becomes passive. * **Locator**: Adds "Linger after Play" setting. * **Video**: Adds "Show Poster Image" checkbox, allowing the poster to be hidden. * **Synchronizer**: Adds auto-play mode setting and configurable start-to-play delay. * **Synchronizer**: Adds the ability to specify an explicit sync source property path. * **Schedule**: Spot can inherit block from outer group if schedule is blank (enabled in Display Spot and Spot Group settings). * **Schedule**: Copy/Paste supported by layers and entries. * **Modbus**: Initial state of output channel can be specified. * **Display Spot**: Adds a //keyCode// property, indicating pressed key (if enabled). * **Drivers**: Added support for the the [[blocks:server:advanced_server_configuration:mqtt|MQTT]] IoT standard. * **Drivers**: Added support for USB Serial port devices connected through PIXILAB Player. * **Drivers**: Added name, fullName, driverName and deviceType getters to device drivers. * **Parameters**: Can be defined (not just overridden) also on the Spot. * **Parameters**: Contributed also by Referenced or Located blocks. * **Parameters**: Can define multiple levels in Property Paths. * **Parameters**: Built-in //ThisSpotPath//, holding the path to the current Spot. * **Parameters**: Built-in //LocatedSpotPath//, holding path to Spot located by Locator. * **WATCHOUT**: Added an "Enabled" checkbox, controlling whether Blocks will connect. * **Scripting**: WATCHOUT adds //getControlCues// function, providing control cue data. * **Scripting**: Added support for //named aggregates// (similar to //indexed properties// but named). * **Custom Property Path**: Allows mix of literal, parameter and Relative.xxx in Child Replication. ===Minor Improvements and Bug Fixes=== * **Composition**: Auto-hide delay is now customizable. * **CSS**: Improved built-in CSS editor. * **Live Video**: Additional latency option favoring reliability over low latency. * **Live Video**: Improved audio/video synchronization for long running streams. * **QR Code**: Renders correctly on PIXILAB Player also when video is visible. * **Configuration**: New "apiKeys" entry, specifying key name/value to validate requests. * **Scripting**: SimpleHTTP can now also make DELETE requests.. * **Scripting**: User script @resource methods can be protected using @apiKey decorator. * **Scripting**: MobileSpot //getVisitor// function returns a Visitor given its ID. * **Scripting**: MobileSpot //getAllVisitorIds// function returning all current Visitor IDs. * **Scripting**: MobileSpot //hashedIdentityToPuid// function decoding hashed visitor ID. * **Custom File Uploads**: Can be protected using api key named "upload". * **Camera**: Don't remove any custom CSS classes applied when taking photo. * **Behavior**: Classify sometimes failed to apply class the second time a block appeared. * **Editor**: Added "Server Connection Lost" information message. * **Editor**: Clearer distinction of leaf vs trunk properties (now bolded) in property pickers. * **Editor**: Editor preview of an Attractor was always black. * **Task**: Triggering on "Becomes True" could trigger also on other changes (e.g., from 15 to 16 – potentially a breaking change). * **Button**: Back button didn't work after navigating using button in Stack Block panel. * **Spot Settings**: Color of "Fade through Color" transition wasn't preserved. * **Display Spot**: Separate per-window ID if using the display=XXX URL query parameter (potentially a breaking change). * **Spot**: Improved reconnection reliability after network/wifi connection loss. * **WATCHOUT Spot**: Obeys block assigned through enclosing group/scheduler. * **Scripting**: An @id-decorated Record field's value can now be changed. * **Scripting**: Subscribing to not-yet-existing indexed item didn't update once available. * **Scripting**: Reading a non-existing Record field now returns undefined instead of NPE. * **Scripting**: SimpleFile, et al, may also access /auth directory (like /public, but requires login). * **Scripting**: Fixed a rare Promise leak. * **Licensing**: Cloud license auto-updated once every night. * **Visitor Spot**: Actively disconnect/connect when web page or device enters/exists standby. * **Parameters**: Now work properly also in partial binding for block replication. =====PIXILAB Blocks 6.0.3===== Released on May 3, 2023, this version contains minor bug fixes only. * **Synchronizer**: Improved reliability/performance when starting to play long video files. * **Offline**: Apply custom display and audio settings also when offline. =====PIXILAB Blocks 6.0.2===== Released on April 6, 2023, this version brings various bug fixes and minor enhancements. ===New Features=== * **Volume Behavior**: Adds Scale Factor setting (defaults to 1). * **Volume Behavior**: If no property path then apply just the Scale Factor. ===Minor Improvements and Bug Fixes=== * **Buttons/Controls**: Position text correctly once all fonts are loaded. * **3D**: Spin animation no longer interferes with object manipulation. * **Appears/Disappears Behavior**: Fixed a rare bug. * **MediaURL**: Remove any loading indicator once audio starts playing * **Thumbnails**: Could fail to update JPEG thumbnails under Windows. * **Synchronizer**: Synchronized audio could occasionally fail to start on iOS. =====PIXILAB Blocks 6.0.1===== Released on March 3, 2023, this version brings various bug fixes and minor enhancements. ===New Features=== * **Scripting**: The 'image' event also published by MobileSpot. * **Block Scheduler**: Added checkbox to show/hide layers below the selected layer. * **Media Block**: Option to never show play/progress UI, not even while paused. ===Minor Improvements and Bug Fixes=== * **Block Caching**: Various reliability improvements. * **Block Scheduler**: UI and bug fixes. * **Synchronizer**: Slave tracks master also while paused. * **Locator**: Button to locate other Spot didn't work from inside a located block. * **Spot volume**: Property didn't work in some complex cases. * **Reveal behavior**: Fixed a bug that could cause this behavior to fail, * **Spot playing**: Property now works also when using video with native controls. * **Book with Feed**: First page didn't render once feed was loaded. * **Reliability**: Spot properties didn't always re-connect after network connection drop. * **Performance**: Allow for more general and longer browser caching of media files. * **Scripting**: Fixed insert/delete bug in dynamic lists causing incorrect display * **Scripting**: Fixed exception if missing size or cropping for SimpleImage.derive(). * **Scripting**: SimpleImage.info() width & height account for EXIF rotation. * **Scripting**: SimpleImage consider EXIF flipping when cropping an image. * **Scripting**: Made rest/script/invoke/xxx requests with no extra URL data work again. =====PIXILAB Blocks 6===== Released on Dec 14, 2022, this version brings significant new features as well as numerous minor enhancements. ===New Features=== * **[[blocks:advanced_scripting:visitor_identity_tracking|Visitor Data Collection]]**: Collected data influences experience and provides statistics. * **Visitor Spot**: Track and interact with individual visitors. * **Dynamic Data**: Now possible to add/update/remove/rearrange indexed property lists. * **Dynamic Data**: List mutations tracked live by slideshow, book, scroller and grid. * **Camera**: New block type for taking photos, uploading to Blocks. * **QR Scanner**: New block type for scanning QR codes using camera. * **QR Block**: Adds new Border option, and is now a premium block type. * **Joystick**: Two-dimensional "slider" useful for pan/tilt control. * **Locator**: Use NFC tags for location awareness on iOS and Android. * **Live Video**: Local capture supports multiple sources. * **3D Block**: New "Illumination Factor" controls lighting (brightness) of the model. * **3D Block**: New Show Shadows option, casting shadows on model from key light. * **Parameters**: New "Edit parameters" command on the Edit menu. ===Minor Improvements, Changes and Bug Fixes=== * **Task**: Shift-click play symbol to start regardless of condition. * **Display Spot**: Setting the time property no longer affects playing state. * **Visitor Spot**: Customizable "home screen" icon (specified in config file). * **Synchronizer**: Avoid skips on iOS/Safari 15, caused by reduced timing precision. * **Synchronizer**: Local Synchronization works also on Visitor Spot. * **Video/Audio**: Don't show pause/play button if media stops briefly. * **Behaviors**: Can be named (useful with multiple behaviors of same type). * **Behaviors**: Mute, Opacity and Rotate have basic functionality without binding. * **QR Scanner**: Improved scanning speed and reliability. * **Web Block**: Sandboxed to prevent web pages from navigating out of Blocks. * **Editor**: block-group=XXX URL constrains block creation to group XXX. * **Scripting**: Custom GET endpoints supported by @resource() decorator. * **Scripting**: Navigation event in Visitor Spot with Data Collection enabled. * **Scripting**: Feed scripts can now expose and access properties. * **Scripting**: Supports GET requests in User scripts custom endpoints. * **Scripting**: Sender's IP address included with received UDP data. ====PIXILAB Player==== * Block Caching minimizes data traffic and supports offline use. * Watchdog restarts the browser, should it crash or stop responding for whatever reason. ====Licensing==== New cloud-based license available, removing the need for a USB dongle. ====Server images (Linux)==== * **Server** Updated to latest Ubuntu LTS version. * **Server**: Uses nginx reverse proxy for increased performance. * **Server**: Includes Let's Encrypt certbot for HTTPS certificate automation. * **Virtualization**: Official support for virtual servers based on OVA image. =====PIXILAB Blocks 5.6.1===== Released on May 24, 2022. ===New Features=== * **Block Scheduler**: Exposes the current block as a property. * **Block Scheduler**: Shows ghosted entries on layers below current. * **Display Spot**: New Information tab provides details about the player. * **Text**: Localized number formatting option named locale; e.g. locale=en-GB ===Minor Improvements, Changes and Bug Fixes=== * **Block Scheduler**: Duplicate command can be used. * **Block Scheduler**: Supports Undo. * **Scroller**: Scrolls properly also when navigating to a deeply nested block. * **Display Spot**: Wanted power state becomes true if spot powered up manually. * **Samsung SSSP**: Discarding Display ID now works properly. * **Locator**: Accept keyboard-emulation-scanned codes longer than 4 characters. * **Custom CSS**: Button text placement improved for custom font/css. * **Display Spot**: Setting time property from a task now pauses playback. * **Display Spot**: The seek function now available from task, accepting time as a string. * **Web Block**: Dissolve transition works between Web Block and other block types. * **Task**: Property paths with brackets now work properly also in ForEach statements. * **Modbus**: Improved precision of 32 bit float input property value. * **Button**: Fixed a "Go to Local Block" problem when originating button disappeared. * **Locator**: Scanned non-numeric target fall back to Spot ID if fails resolving to a Spot Path. * **Attractor**: Remain active indefinitely if neither "Deactivate on xxx" is selected. * **Attractor**: Extend timeout by setting Spot's active property to true repeatedly. * **Audio media**: Non-native progress bar didn't update while playing. * **Feed**: Supports regular top-level properties marked @property, just like user scripts. * **PIXILAB Player PXE booting**: Reduced TFTP timeout from 20 to 10 seconds for faster recovery. =====PIXILAB Blocks 5.6===== Released on March 18, 2022. ===New Features=== * **CSS**: Built-in CSS editor for block-local CSS files, with live update. * **Block Editor**: "Edit Block CSS" command available also from within nested blocks. * **Block Editor**: "Open Editor Preview" command, previews edited block in separate window. * **Transition**: Adds "Fade through Color" transition type. * **Synchronization**: "Exclude from Sync" checkbox added to Media block. * **Display Spot**: New "spot-id" URL query parameter to manually assign an identity. * **Editor**: Query parameter block-group specifies which group to show in Library view. * **Text**: Allow benign HTML tags in data exposed as dynamic text (e.g., from Feeds). ===Minor Improvements and Bug Fixes=== * **Media URL**: Client-side memory leak caused by repeatedly changing the URL. * **Reference Blocks**: Missing thumbnails in referenced block picker. * **Button**: Always perform UP action if button disappears while DOWN. * **Slideshow**: Skip over Reference Blocks with no/missing target. * **Behavior**: Reveal now also accepts spot parameters in path. * **Scripting**: Interpret non-ASCII characters properly also under Windows. * **Locator & A/V progress**: Render text using correct font (regression). * **Samsung SSSP**: Recognize defaultSpotCSS from Blocks config file. * **Display Spot**: Don't force wanted power state to true if connects while undefined. * **Synchronizer**: Sync target switching and time jumping improvements. * **Attractor**: Can now be nested in outer one (outermost governs Spot's active state). **IMPORTANT:** Drivers and system support files are updated from time to time, fixing bugs and improving functionality. If you're using any drivers or other scripts, make sure to also update those components from their open-source repository, found here: https://github.com/pixilab/blocks-script In particular, update the files in script/system and script/system_lib. Also update any drivers you rely on with the latest versions. Drivers are found in script/driver and (for more rarely used drivers) script/driver-archive. If you need any drivers found in script/driver-archive, those need to be copied to the script/driver directory on your Blocks server to become active. Restart your Blocks server after replacing all those files. =====PIXILAB Blocks 5.5===== Released on January 21, 2022. ===New Features=== * **Editor**: List view of Blocks on Display page. * **Editor**: Auto-create common block types when dropping media on the Display page background. * **Task**: New "atomic" statement, executing enclosed statements simultaneously, as a unit. * **Task**: New "for each" statement, applying enclosed statements to all targets using Relative path root. * **Spot**: Added wakeUp function, returning a promise resolved once the Spot connects. * **Spot**: Changed "power" property semantics to use //wanted// rather than //current// value. * **Schedule Block**: Block start/stop times can be edited numerically. * **Transitions**: Audio fade in/out can be selected as part of a visual transition. * **Composition**: Added Blend Mode setting to child blocks. ===Minor Improvements and Bug Fixes=== * **Subtitles**: Recognize "application/x-subrip" mime type used by latest Chrome. * **NetworkUDP**: Fixed a bug that could cause "bytesReceived" subscription to fail. * **Scripting**: Indexed properties didn't reconnect after editing driver/script. =====PIXILAB Blocks 5.4===== Released on November 12, 2021. ===New Features=== * **Panorama & 3D**: Option to reset orientation after some time of inactivity. * **Panorama & 3D**: Option to auto-spin if no activity, with configurable speed. * **3D**: Configurable vertical rotation constraints. * **3D**: Move model sideways using two fingers (touch) or middle mouse button. * **Fixtures**: Duplicate command now supported for adding multiple fixtures of same type. * **Manage**: Server Status page added, showing some basic server health information. * **Default Spot CSS**: Can be specified in the [[https://pixilab.se/docs/blocks/server_configuration_file|configuration file as]] defaultSpotCSS * **Reference Block**: Use same block group as the referencing block if not specified. ===Minor Improvements and Bug Fixes=== * **Spots**: PIXILAB Logo initially hidden to avoid logo flash before block appears. * **Text**: Improved default font text flow and fidelity on PIXILAB Player. * **Text**: Numeric value scale factor supports decimal (non-integral) value. * **Roles**: Constrain selectable roles to those allowed for current user. * **Roles**: User can't assign role constraints greater than his own. * **Roles**: User can't create a block in a group she can't see. * **Roles**: Group role constraint trumps Block role, not the other way around. * **Artnet**: DMX512 channel value now set to zero when fixture deleted or disabled. * **Scripting**: Fixed a memory leak caused by repeatedly closing a SimpleServer connection. * **Spot Group Title**: The order of words in a space-separated name were reversed. * **Mirroring Service**: Warning in editor if not mirrored recently or disk space is low. * **Security**: Allow Creator to also delete root blocks. * **Block Protection**: Protected root blocks can't be deleted. ===== Version 5.3 ===== Released on September 3, 2021. ===New Features=== * **New Subtitle Block**: Renders SRT and VTT files, can be synchronized to video. * **Synchronizer**: Options for local synchronization within a Spot (e.g. Subtitles). * **Tag Selector**: Allow use of Text Block as direct child. * **Task Page**: Left hand pane and Group/Task/Variable lists can be expanded. ===Bug Fixes and minor Improvements=== * **3D/Panorama**: Adding Button as child didn't work for nested 3D/Panorama. * **Live Video**: RTSP/RTMP didn't work when running Blocks server on MacOS. * **Samsung SSSP**: Improved compatibility for Tizen-based displays. * **Scripting**: Declared TimeFlow system data type, allowing its use as property. * **Scripting**: Added reInitialize(), forcing self-reinitialization. * **Behavior**: Playing not always terminated (set to falsey) at end. * **Scripting**: Fixed a promise leak caused by immediate rejection in resolver callback. * **Feeds**: When list and details are of the same type, getDetails is not needed. ===== Version 5.2 ===== Released on June 24, 2021. Due to the significant number of new features, the [[https://pixilab.se/outgoing/blocks/PIXILAB-Blocks.pdf|User's Guide]] has also been updated. ===New Features=== * **Block Protection** Prevents accidental modification of blocks and/or content. * **Block Templates** Makes a copy when attempting to edit a block marked as Template. * **Behavior** Added Mute behavior. * **Behaviors** Support for Relative bindings in replicated blocks. * **Video/Audio** Added option to use native browser controls. * **Live Video** RTSP/RTMP setting favoring "Low Latency" or "High Reliability". * **Button** Added "Set to Property Value", allowing the value set to be parameterized. * **Locator** Optional property binding for located spot ID/path. * **Slide Show** Apply "active-slide" CSS class to the current slide's element. * **Fixtures** Adds a "multiFunc" JSON setting to explicitly indicate "color"/"position". * **Tasks** Allow use of global functions (such as parseInt) in expressions. * **Scripting** SimpleProcess provides enhanced control of external server processes. * **Scripting** Indexed properties now also support explicit change notification. * **Block Editor** Query param ?sandbox=block prevents exiting if below Manager. ===Bug Fixes and Improvements=== * **Button** Fixed double-touch error sometimes occurring on Android/Chrome devices. * **Synchronizer** Faster start of slave in some cases. * **Roles** Display Spot can now control its own properties (e.g., "active") regardless of role. * **Scroller** Scrolls also when shown using a Locator inside a Book with swipe navigation. * **Live Video** Avoid long-term latency creep (PIXILAB Player and other Chrome-based players). * **Volume Behavior** Applied initially when block loaded, not only when changed. ===== Version 5.1 ===== Released on April 29, 2021, this version contains mainly bug fixes and minor enhancements. * **Attractor** Added separate "Touch/Click Keeps Active" option * **Scroller** Added scroll-snap to start as alternative to center. * **Tasks** Allow parametrization of task names in property bindings. * **Behaviors** Support parameters in property paths. * **Locator** Support spoon-fed "spot" query parameter also in initial URL. * **Tasks** Permit objects with simple data as function parameters. * **Media URL** Fixed a bug occurring when used as a root level block. * **Button** Fixed a bug related to a secondary binding to a local spot property. * **Synchronizer** Tweaked sync offset for iOS. ===== Version 5 ===== Released on March 31, 2021, this version brings new features as well as minor enhancements. === New features === * **[[blocks:app-note:3d_block|3D Block]]** New block type for displaying 3D models you can spin and click. * **[[https://vimeo.com/517031971|Locator]]** Adds GPS (geolocation) and QR scanning support. * **Spot Geo-zones** Latitude, longitude and radius added to Display and Location Spots. * **Media URL** Loads media from URL, with aspect ratio adaptation. * **Grid Block** Displays child blocks as a grid. * **Media Block** Replace Media command replaces file while keeping settings/behaviors. * **Press Behavior** Triggers a Button based on any property (e.g., external input). * **Classify Behavior** Applies a custom CSS class conditionally from property. * **Playing Behavior** Sets a property while the block is playing. * **[[https://vimeo.com/528378235|Database Integration]]** Loads and displays content from external databases. * **[[https://vimeo.com/508779815|Child Block Replication]]** Auto-creates child blocks in Scroller, Slideshow, Book and Grid. * **Indexed properties** Device driver "channels", database records, and similar lists. * **Relative Property Paths** Supports list/details views of indexed objects. * **Feed script API** Manages connections to external databases. * **SimpleDB API** Provides direct SQL database access. === Improved or changed === * **Web Block** Dynamic URL supported through property binding. * **Web Block** Can now use block-local URL, beginning with ~/ (just like custom CSS). * **Speed Behavior** Option to control pitch change on/off. * **Bindings** All property bindings can now be viewed/edited as text. * **Scroller** Smooth scrolling from task/script using the scrollTo function. * **Scroller** Option to snap block to center of scroller. * **Display Spot** Task/script "reload" has new option to reload the browser. * **Text** Revised text editor, with more predictable behavior. * **Custom CSS** More reliable text positioning on buttons and other controls. * **Locator and Synchronizer** Are now premium blocks, licensed separately. * **PIXILAB Player** Improved reliability of network booting (PXE/TFTP) * **Spot API** Read identity (e.g., MAC address), IP address and any geo-zone data. * **SimpleFile API** Adds functions for reading CSV, XML and JSON files. * **SimpleHTTP API** Adds support for decoding XML and JSON as part of the request. * **SimpleProcess API** Adds blocksRoot read-only property (avoids hard-coding). ===== Version 4.4 ===== Released on December 8, 2020, this version contains mostly bug fixes and stability enhancements, plus a few minor enhancements. It is recommended for all users. * **Task**: Duplicating/copying statements works again. * **Display Spot**: Always reload current block after server restart. * **Scale behavior**: Add asymmetric scaling (including "flipping"). * **Scale behavior**: Apply factor and offset properly. * **Speed behavior**: Add option to preserve or change audio pitch when changing speed. ===== Version 4.3.2 ===== Released on November 6, 2020, this version contains mostly bug fixes, and a few minor enhancements. Due to the correction of a stability problem (memory leak), this version is recommended for all users. * **Bug**: Fixed a memory leak triggered by sendText to unconnected network device. * **Bug**: Made "marching ants" selection indicator work on Chrome 86. * **Text**: Wrap lines also when used inside a horizontal scroller. * **Transition**: Made Crossfade always fade up incoming block. * **Scripting**: Fixed a bug that could cause SimpleHTTP put/post to fail. * **Appears/Disappears Behavior**: Added percentage visible threshold. ===== Version 4.3.1 ===== Released on September 17, 2020, this version contains mostly bug fixes, and a few minor enhancements. === Critical Long-term Server Stability Problem Corrected === A long-term stability problem (memory leak) has been identified and fixed in this version. This error was introduced in version 4.1, and persists up to and including version 4.3. It may cause the server to become very slow or fail/restart after some time, where "some time" may be days, weeks or months depending on your particular configuration. Use of MODBUS devices is particularly prone to provoke this error. If you run any of the affected versions in an installation, you're strongly advised to upgrade to this (or a later) version. === Other Enhancements and Bug Fixes === * **Slider/Bar** Auto-adapts to the duration of a time, if known (e.g. a Spot's time position). * **Text** The 'show' formatter has been renamed to 'time', and now also applies to number. * **Reference Block** Now also works as expected for playing a Video inside a Synchronizer. * **Spot Group** Removing Block Assignment now always works as expected. * **Reveal Behavior** Now works also if property already known when block is loaded. * **WATCHOUT** Command wakeUp now repeats WoL message (useful if called during shutdown). * **Spot** Added URL query parameter 'tags', specifying comma separated tags to apply * **Block names** Block Schedule can no longer be renamed to the name of an existing Block. * **Scripting** Added read-only address property to DisplaySpot, providing its IP address while connected. * **Network Driver** Added rcvPort to typeSpecificMeta to hint receive port of NetworkUDP. ===== Version 4.3 ===== Released on July 30, 2020, this version contains new features, enhancements and bug fixes. === 360 degree Panorama Block === The brand new Panorama block allows you to view a 360 degree environment, such as a room or an outdoor scene. Use it to bring your audience to places they can't visit in person. It's based on a 360 degree spherical image, with hot-spots sprinkled at interesting positions, allowing you to move to other locations, play a video, or any other Blocks action. Here's an [[blocks:app-note:panorama|application note]] with a fully working example, as well as a tutorial video. :!: **IMPORTANT:** The new Panorama block is a premium block type, requiring an additional license option. As such, it is now also joined by the Live Video block, also requiring an additional license option. Blocks licenses sold before the release of version 4.3 are entitled to a free upgrade to the Live Video premium block type. === Block-specific Custom CSS URL === A custom CSS URL can now be block-directory-relative using the form //~/xxx//, where xxx is the path under the referencing block's directory in the file system. This is useful for CSS that's specific to a particular block, keeping it together within the same folder, and being exported/imported along with the block. To include additional non-block-specific CSS, such as for fonts common to several blocks, you can use @import from your block-specific CSS file, as described here: https://developer.mozilla.org/en-US/docs/Web/CSS/@import === Re-purposing a Display Spot === While you've been able to re-assign a Display Spot to a newly added player for quite some time. you may occasionally want to do the opposite; detach an already assigned player, so it can subsequently be assigned to another Display Spot. To facilitate this, a checkbox has been added to the Display Spot settings dialog, allowing you to discard its ID. Selecting this checkbox and clicking OK detaches the player, reverting it to its initial state, while keeping all the settings in the Display Spot. === Other Enhancements and Bug Fixes === * **Button** New Append action when bound to a String property. * **Play Behavior** Added option to leave media playing when condition lo longer true. * **PIXILAB Player** Tweaked master/slave synchronization offset to improve the synchronization. * **Network Devices** Made device name parametrizable from buttons, etc. * **Display Spot** Bug fix; Setting display positions without assigned touch inputs failed. ===== Version 4.2 ===== Released on June 18, 2020, this version contains a few new features and some minor enhancements and bug fixes. === Touch Interaction across Multiple Displays === When running a PIXILAB Player with multiple touch-displays connected, you can now specify the correlation between each touch surface and its corresponding display. This option has been added to the Display Spot settings when using a player with more than one connected display. Combined with the ability to position the displays in any desired arrangement, this allows you to create very large touch surfaces, spanning several displays. === Retain Position Across Temporary Loss of Network Connection === Previously, if the network connection was lost temporarily, the spot would reset to its initial view (as if the block had just been loaded) once the network connection was reestablished. This could result in a disruptive user experience on an unreliable network connection, such as a spotty wifi. Now, the spot will instead retain its current navigation position across a loss of network as long as the same block remains loaded once the connection is reestablished. :!: An unreliable network connection may of course still result in other disruptions, and should be avoided whenever possible. === New gotoBlock Command adds Seek and Play Options === The old Display Spot //gotoPage// command is now deprecated. It has been replaced with a new **gotoBlock** command. While gotoBlock can navigate to any position within the current root block of the spot as before, it also allows you to further specify what to do when the target block is audio or video. When targeting such content, additional options now allow you to play/pause the media and to position (seek) into it. :!: While the old //gotoPage// command is still functional, it has been removed from the DisplaySpot script declaration, resulting in the editor flagging this as an error. Thus, if you're using the old form of this command in a script, you should update it to the new form to gain those additional options, although the old form will continue to work despite being marked as an error by code editors. === Other Minor Enhancements and Bug Fixes=== * **Attractor** Reset timeout when navigating also using command from outside. * **Network Devices** Sort drivers alphabetically. * **Live Video** Spot Volume and Volume Behavior applied. * **Book** Added Transition Start Delay. * **Behavior** Appears/Disappears can set value to empty (i.e., empty no longer implies //true//). * **MacOS** Fixed a code-signing issue that could cause Blocks not to launch. ===== Version 4.1 ===== Released on May 25, 2020, version 4.1 contains some significant new features and enhancements. === Active Synchronization === Blocks now applies active synchronization when using a Synchronizer block on PIXILAB Player or Chrome/Chromium for desktop and Android. This enhanced synchronization provides the following benefits: * Maintains accurate synchronization over long time spans (while the start-and-forget sync only provided an accurate start position, which then could drift over time). * Allows synchronized content to be looped seamlessly. This enhanced synchronization works by making minute speed adjustments to video as it plays. Since seamless speed adjustment isn't supported by some browsers (e.g., Safari), this mechanism works only works on select players and browsers. === New Wipe Behavior === A new behavior has been added, allowing a block to be masked from either edge. Watch [[https://vimeo.com/422428642|this video]] for an example of how that behavior can be used. Download the complete application note, including a working Blocks project, [[blocks:app-note:before-after|here]]. === Mirror Server === A new "Mirroring Service" entry has been added to the Manage page, showing the status of any [[blocks:server:mirror|Mirror Server]] attached to your Blocks server. This is an add-on feature of Blocks, allowing you to have a second server for redundancy purposes. The mirroring service, running in the background on both the Blocks Server and the Mirror service, copies all changes made to your running Blocks system over to the Mirror Server. The Mirror Server has Blocks installed, and is essentially a full copy of your Blocks server. By keeping its data in sync with the main Blocks Server at all times, it is ready to take over running your Blocks system, should the main Blocks Server fail. === RTMP Live Video === RTMP is yet another format for streaming video, now supported by Blocks. While similar in some ways to RTSP, which was added in Blocks 4.0, RTMP works with other devices and programs. RTSP is supported mainly by network cameras and some streaming boxes (such as [[https://www.streamingvalley.nl/product/kiloview-e2-hdmi-h264-srt-video-encoder/|this one]]). RTMP, on the other hand, can be streamed using applications such as [[https://obsproject.com|OBS]] and [[https://www.vmix.com|vMix]], as well as some hardware devices, like the popular [[blocks:live-video:atem-mini|ATEM Mini Pro]] from Blackmagic. Learn more about how to use RTMP with Blocks [[blocks:live-video#rtmp_stream|here]]. === Related Components and Infrastructure === As part of the Blocks 4.1 release, we've also made significant updates to other system components. * The Linux version used by our Linux server image has been updated to Ubuntu 20.04 LTS. * The Java runtime is updated to version 11, which is the current LTS version. * The Web Renderer used for thumbnail rendering, and by the WebRenderer scripting API, now uses Chromium on all platforms. (It previously used another method for rendering on Mac/Windows.) ===== Version 4.0.1 ===== Released on April 30, 2020, this version contains mainly bug fixes and minor enhancements. * **Reveal Behavior** Now works also inside Locator or Reference. * **Volume Behavior** Fixed a problem on some mobile devices. * **Volume Behavior** Doesn't work on iOS (not supported by iOS). * **Speed Behavior** Ignore "too low speed" browser exceptions silently. * **Book** Child blocks can now override book dimensions. * **Book** Swipe to navigate works also with pages named only with digits, * **Book** Exclude swipe navigation for back button purposes. * **Synchronizer** Made media sync properly also inside Scroller. * **Reference Block** Refresh preview in editor on various setting changes. * **Locator** Ensure new spot always opened when locating by scanner while playing other. * **Locator** A QR code scan can jump directly from one spot to another. * **Button/Indicator** Picker added for selecting the target root block. * **WATCHOUT** Support auxiliary timelines in folders. * **Spot** Fixed a rare websocket connection failure caused by temporary loss of wifi. * **Scripting** Fire 'Spot connected' a bit later, after setting any Block. * **Scripting** Improved some error messages to better indicate location in script. ===== Version 4 ===== Released on March 17, 2020, this version brings new features as well as minor enhancements. === New features === * **Behaviors** attached to blocks provides new levels of interactivity. * **QR Code** new block type. * **Low Latency Live Video**: Local capture (USB) and network camera/encoder (RTSP). * **Swipe** to flip pages in Book blocks. * **Spot Parameters** are now unified with other properties under "Local". * **Spot Parameters** also accessible as system properties under .parameter.xxx * **Go Back** Button action backtracks local navigation. * **Locate Spot by Name** in Button (for use with invisible Locator) * **RFID/QR** scanning support in Locator (augments manual method for entering location ID). * **Hidden numeric keypad in Locator** (for use with RDID/QR/Button navigation). * **Go Back action** added to Locator Exit button. * **RFID/QR scanning** support added to Spot (exposed as Spot property). * **Reference Block Target** block can be specified using a property. * **Modbus** adds configurable poll rate for inputs. * **Modbus** supports 32 bit floating point inputs. * **Modbus** supports full 16-bit address (0-65535). * **SimpleWebsocket** new scripting API for connecting to external servers. * **Spot API** reload function, usable from Task and User Script. * **Spot API** locateSpot function, forcing a Locator to a specified location. === Improved or changed === * **Synchronizer** faster switching of synchronized content. * **Task** evaluates trigger condition on start even if task has no explicit trigger. * **Video in Scroller** set to auto-play starts playback once scrolled into view. * **iPadOS 13+** support for Visitor Spot to play audio. * **Roles** Creator can no longer access Manage page or create/edit Spots. * **Instagram Block** Removed (no longer supported). * **Serve pre-compressed content** (file.gz) under /public (when requested by client). * **Reference Block** opens referenced block when double-clicked in child block list. ===== Version 3.3 ===== Released on November 15, 2019, this version brings some news as well as some bug fixes and minor enhancements. === New features === A Text block can now be used as a direct child of Scroller, where its size is determined by the text. This is useful when creating more traditional web-style pages mixing text and images. As a result, the command to add Text has been moved from the //Add Control// to the //Add Child// menu. You can now also add basic padding to Text blocks. === Bug fixes and minor enhancements === * **Scroller**: Child block can be selected by clicking the content. * **Block Editor**: Fixed an editor crash caused by specifying an invalid background color. * **Scroller**: Positioned properly when used as a direct child of a Composition. * **Transition**: Made Push, SlideIn and Dissolve work more reliably on Chrome-style browsers. * **Scroller**: Children can use natural dimensions in scroll direction also when scroller is nested. * **Scroller**: Apply custom classes properly. * **Scroller**: Fit oversized Reference blocks in the non-scroll direction * **Custom CSS**: Hoist CSS path when wrapping a block. * **Duplicate command**: Handle numeric suffix > 9 properly. * **Synchronizer**: Fixed a rare playback start delay. * **Locator**: Removed repeated properties in editor for root level Locator. * **SimpleFile**: Increased max file size from 100k to 2M. * **Interactive elements**: Show cursor if appropriate also after (re)loading a block. ===== Version 3.2.1 ===== Released on October 1, 2019, this version contains mainly bug fixes and minor enhancements. * **Text Block**: Use white insertion point also on dark checkerboard background. * **Block lists**: Paste before any selected block rather than always appending. * **Transitions**: Consider wrapping as well for possible direction reversal. * **Transitions**: Improved reliability when used with reference blocks. * **CSS**: Apply to editor also when starting out at an inner block. * **Drivers**: Made max string receive length setter work for network devices. * **Spot Parameters**: Now work also with Dynamic Text and Text Input. * **SSO**: Allow log-out through menu command in Blocks. * **Locator**: Superimpose any parameters from located spot while there. * **Block lists editor**: Use indexes only in URL when editing child blocks. * **Tizen Displays**: Now works also with Samsung SSSP gen 5. ===== Version 3.2 ===== Released on August 23, 2019, version 3.2 contains several significant new features. * **Spot**: Transition for block changes. * **Book**: Transition for page changes. * **Composition**: Press Shift while resizing to constrain image/video aspect ratio. * **Composition**: Configurable grid size for editor snapping. * **Block**: Hierarchy view for visualization and navigation. * **Display Spot**: Keyboard key 0...9 can be used as general purpose inputs (Spot option). * **Book**: Applies CSS class 'first-child' and 'last-child' to the first/last page element. * **Spot Parameters**: Allow use also for Realm variables and User Script Properties. * **Logs**: Changed from JSON format to plain text for better readability. * **Locator**: Settings available also when used as a child block. * **Spot**: Hidden in UI when can't be controlled by current user's role. * **Block Group**: Hidden when no blocks accessible to the current user's role. * **CSS**: Live-apply custom class change of child blocks in editor. * **Editor**: URL follows child block navigation, allowing the back button to be used. * **Scripting**: Fixed a bug in the SimpleFile append method. * **Scripting**: Added setMaxLineLength to NetworkTCP. ===== Version 3.1 ===== This version, released on July 10, 2019, contains numerous small but important features and enhancements. * **Media**: Improved performance when playing large video files. * **Display Spot**: Can be added tentatively, without assigning a pending ID. * **Block**: Export/import using ZIP file. * **Block**: When duplicating a root block, ask for duplicate name up front. * **Synchronizer**: Child Video/Audio will no longer auto-play unless set to do so. * **Synchronizer**: Always use preferred sync master, even if offline. * **Synchronizer**: WATCHOUT Spot can act as synch master for Display Spots. * **Licensing**: Add unlimited number of Spots (but only USE the number licensed). * **Licensing**: Added time-limited Producer license option (terminates after 4 hours). * **Licensing**: Added date-limited Evaluation license option (expires after 30 days). * **Spot Parameters**: Can now also be set through URL query parameters * **Roles**: Allow Creator role to rename blocks. * **Text**: Use white caret for editing text on dark Composition background. * **Security**: Allow keyStorePath to be relative to PIXILAB-Blocks-root. * **Security**: Hide and restrict Realms and Tasks for roles below Manager. * **Attractor**: When using nested Attractors, only outermost governs Spot's active state. * **DMX/Artnet**: Auto-population of Generic types now works also under Windows. * **Task**: Added Duplicate command and fixed a Copy/Paste error. * **Scripting**: Authentication now optional for SimpleMail. * **Scripting**: SimpleFile now provides lastModified, list and delete entire directory. * **Scripting**: New SimpleImage service to analyze, scale and crop images * **Networking**: WebDav server support added. ===== Version 3.0 ===== This is a major new version, released on June 1, 2019, with the following noteworthy enhancements and changes. * Duplicate a root level block. This is particularly useful when using a block as a template for making new blocks, then tailoring the copy to your liking. * Copy/paste between root blocks. Related media files are automatically copied across, keeping each block self-contained. * Copy/paste of entire tasks, between task groups or across realms. * New names for some spot types that we hope more accurately describe their purposes. The Mobile spot has been renamed Visitor spot, and the Virtual spot has been renamed to Location. * Built-in support for using multiple displays with a Display spot when using the PIXILAB Player. * Using the PIXILAB Player, you can choose the desired audio output device and profile. * The Linux-based server supports [[blocks:server:pxe-boot|network booting]] (PXE) of PIXILAB Player PCs. * A spot can be reassigned to a new player. * Parameters can be used when binding buttons and other controls to their target properties. Useful when you want a target property to vary with the context. * Authentication of users supported in a number of ways, including enterprise-grade single-sign-on solutions. * Authorization based on user roles to perform various functions in or with Blocks. * User scripts can now send emails. * Device drivers can expose dynamic properties defined by code, depending on the circumstances. * The updated Linux-based server image is now based on Ubuntu 18.04 LTS, with numerous enhancements to further increase the robustness of the server. ===== Version 2.3 ===== This version, introduced on December 14, 2018, adds a significant number of minor features and enhancements. :!: **Important notice to Windows users**: When updating to this version, please download and install the complete Windows version (after uninstalling the previous version), as a number of components have been updated. ==== New Features ==== * **Composition** and **Text**: More checkerboard styles in editor. * **Composition**: Manual scale editor setting. * **Video**: Progress indicator (if enabled) will appear initially before starting playback. * **Video**: Stop playing automatically when scrolled out of view. * **Slideshow**: Checkbox controlling whether audio/video pauses with slideshow. * **Slideshow**: Video with explicit duration will loop if required to fill duration. * **Media files**: Ask what to do when adding a file that already exists in the block. * **Live Video**: Stream can be paused and resumed. * **Live Video**: Video that includes audio can be started manually on iOS. * **Licensing**: License key can now be accessed over the LAN. * **Video with controller**: Add 'playing' CSS class to enclosing media-placeholder while playing. * **Scripting**: Relax return type for @resource methods (also includes Promise). * **Display Spot**: Added scrollTo method, allowing scrolling from task/script. * **Display Spot**: Added time property accessible from task/script. * **Audio**: Added optional progress bar/control. ==== Bug Fixes and Minor Tweaks ==== * **Button**: Can use .. to navigate out of a block added by a Reference. * **Video**: Video without audio track set to "play inline" now appears reliably on iPhone. * **Reference Block**: Fixed a problem when used to include video in a slideshow. * **Slide Show**: Don't show incorrect duration for unknown duration. * **Slide Show**: Some transitions didn't work with Reference Blocks. * **Bug**: Block Group disappeared when making a Block with a name starting with #. * **Attractor**: Make active content appear on Mobile Spot. * **Attractor**: Made spot play/pause propagate into any currently active block. * **Synchronizer**: Now works inside an Attractor also on Mobile Spot. * **Video/Audio**: Fixed sometimes incorrectly shown duration. * **Undo**: Make changes applied to sub-blocks after using Undo work. * **Media Block**: Custom CSS class was not applied when used for plain image. * **Block Editor**: Wrap With should not include Locator. * **Locator**: Content inside Scroller sometimes didn't show properly * **Text**: Duplicating text now includes property bindings. * **Text**: Fixed a bug editing nested text with property bindings. * **Text**: Sanitize bound string properties before showing. * **Licensing**: Improved handling of "license count exceeded" situations * **Scripting**: Navigation event missing when navigating into a child of a Referenced block. * **Scrollable**: Allow mouse selection and resize in Composition editor. ===== Version 2.2 ===== This version brings a number of new features, minor tweaks and bug fixes. For more advanced Blocks developers and scripters, there are also a number of API enhancements, described in more detail below. ==== New features ==== * Text Input: New control, allowing properties to be changed by typing. * Text Block: Added dynamic text support (see below). * Media Block with video: Option to show a progress bar, with time and duration. * Display Spot: Checkbox for automatic/manual power management. * Display Spot: Improved WoL power management for PIXILAB Player * Slideshow: Added "Crossfade" transition, useful when transparency is involved. * Custom CSS styling, Tags: Tags now also applied as CSS classes with name tag-XXX on root level element. * Custom CSS styling, Indicator: Can apply a CSS class while "on" to its enclosing block's element. * Server configuration: CORS headers supported for /rest endpoints. ==== Bug fixes and tweaks ==== * Media Block with video: Improved manual play/pause button behavior * Media Block with video: Looping now forces looping instead of merely hinting the default behavior. * Live Video: Add poll interval option to polling JPEG. * Scroller: Made scrolling work also inside a Composition. * Network UDP Device: Enable broadcast use. ==== Dynamic Text ==== The Text block can now incorporate dynamic text, originating from bound properties in a way similar to how Indicators and Bars work. After adding a property to a Text block, the property can be referenced inside the text using the following syntax: {$1} Where '1' here is an index number that refers to the first property. You can add multiple properties to a text block, making them all available for inclusion in the text using this syntax. In addition to the property index number, some data types also accept additional formatting options. These options are separated from the property number (as well as from each other, when using more than one) by a colon. For example, a boolean value is by default rendered as 'true' or 'false'. If you instead want it to be shown as 'YES' and 'NO', reference the property like this: {$1:true=YES:false=NO} This example uses the 'true' and 'false' formatting options to specify how to render those states. See below for available formatting options available for each data type. === boolean === * **true** What to show when the value is true. * **false** What to show when the value is false. === number === * **scale** Factor to multiply value by (e.g., 100 to show as percentage). * **fixed** Number of decimals to show. Specify 0 to not show any decimals. === time === * **show** Which parts of the time value to show, as any combination of hmsf (i.e., hours, minutes, seconds, fractions). For example, if you only want to show minutes and seconds for a time value (such as the current time position in a video), reference the property like this: {$1:show=ms} ==== User Scripting ==== The advanced scripting API had a number of new features added in 2.2. In order to use these new features, make sure you update to the latest version of the Block scripting system files found on our [[https://github.com/pixilab/blocks-script|github]] page – in particular those found under /system and /system_lib. * WATCHOUT: Added aux timeline subscription. * SimpleServer: Can now create a TCP server. * SimpleFile: Can now copy, move and delete files. * Display Spot: New 'navigation' event indicating manual page navigation. * Display Spot: Added tryGotoPage, returning a promise rejected if it page doesn't exist. * New getProperty method with property change notification callback and associated PropertyAccessor object. === Web API invocation === This feature is of interest when developing custom solutions around Blocks, involving custom clients (web browser based, or originating from other web services). You can invoke a method in a user script by making a POST request to /rest/script/invoke/{script}/{method} with {script} and {method} being the name of a user script and a method in that script. The method to be invoked must be marked with a @resource() annotation in order to make it accessible in this way. A JSON object, passed as the body of the request, is decoded and passed to the method. The method can return a single object, which will be automatically JSON encoded and returned to the web client. A 500 error code, will be returned if an error occurs, with error message string as the body. === Custom File Uploads === Upload a file using a multipart form by POSTing to /rest/upload/multipart with following form items: * **file** The file itself. * **target** Subdirectory under temp to upload to. * **fileName** Optional filename to use for the file. If not specified, this is taken from "file" field. You can request a server-created name using an asterisk, such as "*.jpg". Returns the path to the file relative to the temp directory. This can be passed to a Web API invocation, as described above, for further processing, e.g., using the SimpleFile API. ===== Version 2.1 ===== === New features === * [[blocks:live-video|Live Video]]: New block type displaying live video streams. * [[blocks:signage#using_widgets|Widget]]: Block displaying live feeds such as news, weather, clocks, maps, etc. * Attractor: Adds activation by touch/click. * Attractor: Adds deactivation after timeout. * Synchronizer: Adds Loop checkbox, controlling whether content loops or runs just once. * Widget and Web block: Content scaling added. * Button: Multiple functions can be assigned. * NetworkTCP: Allow sendBytes and sendText to be used interchangeably. * Blocks server no longer requires GUI (mainly useful under Linux). * Controls: Title can now also be shown //above// the control * WATCHOUT: Added layerConditions property * Display Spot: Added forceTags() function to override local tags === Bug fixes and tweaks === * Slideshow: Don't skip 1st slide if no transition set * Slideshow: Permit looping of a slide if its duration is overridden * Media block: Renders video start button in the right place also inside a Scroller. * Book: Can be resized after creation. * Synchronizer: Now works properly with spots grouped more that one level deep. * Tasks: Skip over MacOS "leftover" realm files ("._XXX") also under Windows * Spot: Improved server side logging of errors occurring in Display Spots * License management: Sometimes failed to start if another CodeMeter dongle was connected. * Block deletion: Handle "busy" blocks under Windows, where in-use files can't be deleted. * Task: Renamed "Automatic" trigger to "Server Startup" * Task: Don't re-run "Server Startup" when task is edited * Task Scheduling: Now works more reliably. * Task await statement: bug fixes * Book: Sized and positioned properly when used in Composition. * Slideshow: bug fixes * Reference block: bug fixes * When using Chrome on Mac, video no longer appear out of place in some cases. * Composition: Allow negative offsets, so a composition can be used for cropping * Attractor: Set Spot as "active" when gotoPage shows an active page. * Windows-based server: Render block names containing diacritical marks properly * Windows-based server: Set memory heap size explicitly to avoid out-of-memory errors ===== Version 2 ===== * Scroller block for horizontal or vertical scrolling. * Reference block to include blocks in other blocks. * Art-Net/DMX512 control from buttons, sliders and tasks. * Built-in and extensible lighting fixture library. * Media block has additional controls for inline/fullscreen playback on iOS. * Spot group gives explicit control over Synchronizer master spot. * Index-based page navigation from buttons and tasks. * Incremental (next/previous) page navigation. * New “note” statement for adding comments to tasks. * New “await” statement for running long-running statements in parallel. * Advanced scripting for complex control applications. * License management, showing licenses available and in use.