Version 3.5.1
There were no significant changes since v3.5.0, so this changelog includes all changes since v3.4.6:
Changed behaviour:
Compatible versions:
- RepRapFirmware 3.5.1
- DuetWebControl 3.5.1
Upgrade notes:
- You MUST be on RepRapFirmare 3.5-b1 in order to process jobs. It will NOT work with 3.4.x or older!
API changes:
- Introduced new code interceptor option to auto-expand expression parameters for filtered codes (defaults to true)
- Added new sbcConfigFiles field to plugin manifest. These files are not overwritten on upgrade
- Nested plugin data values can be queried in expressions (e.g.
echo plugins.foobar.data.myObj.myProp
) - Added
recursive
parameter to HTTP file/directory delete request - Added recursive delete functionality for RRF delete requests
- Flush IPC command can be optionally used to synchronize both file streams
- Enabled
Nullable
type checks throughout DSF projects - Added support for
null
parameter values (e.g.X
inG28 X
) - Consolidated API exception classes in DuetAPI library
- Changed async code parser to use
Stream
type instead ofStreamReader
- The
scanner
key has been removed from the object model. It is no longer supported
Changed behaviour:
- Macro start/end events are logged as debug instead of info messages if they originate from the daemon input channel
- If a file is supposed to use two file readers, it must be forked via
M606 S1
result
variable is no longer maintained by DSF- If DCS fails to start, there is now a delay of 5 seconds between restart attempts
- Index web file served from the web server is never cached and must be revalidated by the web browser on reload
- If a RRF plugin contains
daemon.g
, it is renamed todaemon.g.bak
on upgrade - Moved
userSessions
root key to newsbc
key M552 S1
unblocks WiFi automatically usingrfkill
- Introduced new "sbc" root key in favour of deprecated state.dsf... properties
- Removed httpEndpoints root key in favour of sbc?.dsf.httpEndpoints
- Open message boxes are automatically closed in the DSF OM when the controller is disconnected
- Removed obsolete
move.workspaceNumber
field - Code parser is much more sensitive to invalid code parameters
- Error messages from macros/job files are more condensed to get closer to messages from RRF
- When a code cannot be read (i.e. code input is interrupted), the file is aborted immediately
New features:
- Object model and M122 report if 64-bit DCS build is used
- Added support for WiFi scanning (M587.1/M587.2)
- Added support for NetworkManager so that network M-codes can be used on Debian Bookworm
M997 S2
can be used to update the system viaapt update
/unattended-upgrades
on the latest DuetPi version (requires Debian Bookworm)M997 S2 V"<version>"
can be used to install another DSF version (includes automatic update to corresponding RRF version) on DuetPiM997 S2 F"unstable"
orM997 S2 F"stable"
can be used to configure the package feed on DuetPi- Prepared Debian Bookworm support in the DWC launch script
- WiFi country may now be reported and updated using DuetPiManagementPlugin
- Added new SBC option for plugins to auto-restart them in case of unexpected crashes
- Added new object model fields introduced by RepRapFirmware
- When files are uploaded, they are uploaded to a ".part" file before they are moved into place
- Added
fileread
and single-char support using apostrophes like in RRF - Added auto flush option to code interceptor API. This is preferred to avoid race conditions under certain circumstances
- Added new pip install script that also checks for built-in modules (thanks stuartofmt)
- Added support for standalone mode HTTP session keys to DuetHttpClient library
- SSID is now reported in network.interfaces[] if applicable
- Added new HTTP endpoint /machine/model as an alternative to /machine/status
- Added support for
M472
(delete file or directory) - Added support for custom array variables and for assigning individual items
echo
can be used to append contents to a file withoutNL
(akaecho >>>"file" "data"
)- Executing codes do not need an individual task any more, instead they are now handled by a new pipeline architecture
- Added support for two file channels, new message box types, and many other improvements made in RRF
- Rewrote much of the meta G-code expression pre-parser and added ability to define custom functions (not yet available via API)
- Added
rr_
compatibility layer to DuetWebServer (HTTP calls in standalone mode)
Bug fixes:
- DCS could not determine if a network adapter uses DHCP or a static IPv4 address
- DPS no longer redirects stdio/stderr to DPS logger unless requested (systemd takes care of that anyway)
- Fixed file handling with boards that only provide a single file channel
move.axes
can be queried sequentially to support up to 30 configured axes- Changed documentation generator to include
<see cref="...">
statements 'g
parameters were not correctly parsed- Added and tested new axis letters to code parser
- Fixed type of
move.segmentation.segmentsPerSec
- If a connection intercepting a code sent a code to another channel, that code was incorrectly assigned the same macro file (if any)
M929
always required a log filename (affected only v3.5)echo
could be executed on inactive channels (e.g. File2)M122
could throw an exception if there were remaining codes in theExecuted
code pipeline handler- Job file processor didn't synchronize OM right after the print started, potentially starting with an invalid
inputs[].active
state - Identical expression requests yielded the same result if requested on two different code channels
- Fixed AppArmor webcam profile to support Spyglass
- Even number values containing dots were interpreted as integers and not as floats
- Fixed handling of non-ASCII characters in G-code parser
- Better enforce maximum length of arguments for meta G-code keywords
- Invalid enum values (in particular filament monitor types) could crash DCS
- Fixed IPC command to evaluate custom expressions
- Obsolete object model fields were not queried
- When custom endpoints attempted to return a status code, DWS incorrectly tried to write a body response as well
- Fixed
M30
support - Fixed default DateTime format in the object model
- WebSocket session key wasn't optional if no password set
- Corrected type of direct display screen instances in the OM definition
- Start-up errors were incorrectly set after booting
- Adjusted AppArmor permissions for webcam access on Debian Bullseye
- New DSF implementation of
exists()
function did not work with local/parameter variables - Fixed potential deadlock caused by code interceptors
- G2/G3 may be repeated as well like G0/G1 in Fanuc mode
- Fixed removal of plugin www files on upgrade/uninstall
- M550 did not update /etc/hosts causing potential problems if no network interface was active
- SBC values in variable indices were not substituted in set command
- Line numbers could be off when handling exceptions from codes
- Fixed issue where missing DNS servers could crash DCS
- Fixed file enumeration in DuetPiManagementPlugin plugin manifest
- Race condition could lead to macro filestream being disposed twice causing potential crash of DCS
- Added missing variable declaration to DSF build script
- Fixed expression queries of plugin values
- Fixed parameter parsing for values consisting of special number formats
- Fixed event log support via
M929
ok
was not output after DSF error messages potentially upsetting Repetier Server- Sometimes code pipeline elements could be marked busy incorrectly leading to potential deadlocks
- Fixed support for M0/M1/M2 as well as underscores in variable names
- Added work-around for non-conform rr_upload requests with invalid content type
- Fixed type of
tools[].feedForward
and corrected defaultsensors.probes[].travelSpeed
value - Fixed support for
update.sh
in update packages (dsf-update.zip
which requiresRootPluginSupport
) - Updated
stat
import to add support for recent kernels (thanks Loïc) - Removed obsolete OM assignment from Job processor
- When a too long code was attempted to be serialized, DCS crashed
- Fixed DateTime encoding
- Code parser could terminate strings too early
- Fixed issue when parsing the end of a file where a multi-byte character could introduce position offsets leading to errors