Be notified of new releases
Create your free GitHub account today to subscribe to this repository for new releases and build software alongside 28 million developers.Sign up
- #324 & #2414 - Native support for the following @ commands:
@pause(pauses the print),
@resume(resumes the print),
@abort(cancels the print). More commands can be added through the plugin hooks
- #1951 - Fixed plugins being able to modify internal state data (e.g. progress, job), causing concurrent modification and resulting run time errors in the printer state processing.
- #2208 - New plugin hook
octoprint.comm.protocol.gcode.errorto allow plugins to override OctoPrint's handling of
!!messages reported by the firmware. Can be used to "downgrade" errors that aren't actually fatal errors that make the printer halt.
- #2213 - Made sure to prevent accidental configuration of a temperature cutoff value less than 1min for the temperature graph.
- #2250 - Added
- #2287 - Added confirmation for attempting to disconnect during an ongoing print. See also #2466.
- #2302 - Detect invalid tools as reported by firmware and blacklist them for
- #2317 - Removed capturing of post roll images for time based timelapses, was causing too much confusion and surprise.
- #2335 - First throw at detecting if a print from the printer's SD was started outside of OctoPrint via the printer's control panel. Requires some specific requirements to be fulfilled by the printer's firmware to function properly:
- Firmware must send a "File opened: ..." message on start of the print
- Firmware must respond to an immediately sent
SD printing byte <current>/<total>
- Firmware must stay responsive during ongoing print to allow for regular M27 polls (or push those automatically) or M25 to pause/cancel the print through OctoPrint.
- Firmware must send
Done printing fileor respond to
Not SD printingwhen SD printing finishes (either due to being done or to having been cancelled by the user).
- #2362 - Added option to configure timelapse snapshot timeout.
- #2367 - Added support for
- #2378 - Made GCODE viewer gracefully handle GCODE subcodes.
- #2385 - Made valid boolean trues check case insensitive.
- #2304 & #2405 - Added support to trust Basic Authentication headers for user login. Currently requires manual configuration through
config.yaml, see the
- #2338 - Allowed plugins to define GCODE script variables using the
- #2406 - Extracted log management into its own bundled plugin and allow fine tuning of log levels.
- #2409 - Added
mkvto the list of accepted timelapse extensions.
- #2444 - Support additional CSS classes on custom control buttons.
- #2448 - Also detect plugins in
~/.octoprint/pluginsthat are provided as bytecode
pycinstead of source
- #2455 - Added option to configure SSL validation for snapshot URL.
M114response format of RepRapFirmware (uses
X:... Y:... Z:... E0:... E1:...instead of
X:... Y:... Z:... E:...)
- Added refresh button to connection panel for easy refresh of the available ports to connect to without having to reload the whole page.
- Increased upper bound of PySerial dependency from 2.7 to 3.4. See also #2333.
- Switch to lower communication timeouts if support of the
busyprotocol by the firmware is detected.
- Refactored serial settings dialog, now has sub tabs and more explanations.
- Allow to disable support for certain firmware capabilities, even if reported as supported by the firmware:
busyprotocol, temperature auto reporting, SD status auto reporting
- Attached tags to GCODE commands moving through the comm layer and allowed plugins to access and extend these tags through the GCODE hooks. Makes it possible for plugins to detect the origin of a command (streamed file vs. GCODE script vs. user input vs. plugin), the point where it entered the system and so on. Also added a new logger
octoprint.util.comm.command_phasesthat if set to
DEBUGwill log the lifecycle of commands through the comm layer including tags to
octoprint.log. See also the docs here.
- Added new
set_job_on_holdmethods on the printer instance, allowing plugins to quickly stall the streaming of a queue. This should be used sparingly - abuse will have significant negative effects on the print job. Read the docs if you plan to utilize this.
- Support extraction of plugin metadata even from disabled and blacklisted plugins through the AST of the module.
- Better logging of printer callback errors and utilization of
frozendictfor internal printer state propagation in an attempt to narrow down on #1951. Should
frozendictcause issues it can be disabled through the settings in
config.yaml, just set
- Log comm state changes to
- Added a regular server heartbeat to the log (every 15min).
- Support SD status auto report by the firmware.
Not SD printingto default "SD status" terminal filters.
- Added custom
readlineimplementation for the serial port. Instead of relying on PySerial's
readlinethat depending on the installed version might only read from the port one byte at the time, we now wait for one byte and then read everything available into a persistent buffer which then is used to fetch lines from.
- Ensure that
callViewModelIfdoesn't try to call null or uncallable
- Added links to the new Community Forum and the new location of the FAQ.
- Improved pip utility logging,
LocalPipHelperwasn't producing output, making it hard to debug such non writable install directories.
- Added a new bundled plugin "Printer Safety Check" that will try to identify printer/printer firmware with known safety issues such as missing thermal runaway protection.
- Plugin Manager: Reduce notification spam. See also #2260.
- Software Update Plugin: Better detection if an update is already running.
- Software Update Plugin: Refer to
plugin_softwareupdate_console.logon update errors in log and notification.
- #2294 - Improved resilience against errors during gathering the file list (e.g. permission errors)
- #2296 - Fixed
X-Forwarded-Forhandling in Flask Login through monkey patched backport.
- #2297 - Return
401on missing/insufficient credentials.
- #2311 - Fixed server not auto connecting on startup if port is set to
AUTO(see also #2311).
- #2316 - Check for valid queue entry in file analysis queue before trying to dequeue, fix for a HTTP
500on upload of a file not supported for analysis.
- #2321 & #2449 - Fixed wrong queuing order of cancel script & first line from printed file on quick start-cancel-start scenarios by introducing a two new states "Cancelling" and "Pausing".
- #2324 - Fixed 500 error when uploading a file type for which no analysis queue exists.
- #2333 (Part 1/3) - Workaround for an update problem caused by interaction of
pipwith dependencies formerly installed as eggs through
python setup.py install.
- #2333 (Part 2/3) - If supported by the underlying PySerial version, cancel all reads and writes on disconnect if possible for a faster connection release. Part 3 (forcing an upgrade of PySerial to 3.4 so this should work in more cases) will be in OctoPrint 1.3.8.
- #2364 - Fixed firmware error reporting in case of cancelling a print due to a firmware error.
- #2368 - Fixed for incorrect handling of unicode filenames in cura slicer profiles
- #2371 - Removed "just now"/"gerade eben" label from temperature graph to work around a graph resize issue caused by that.
- #2392 - Fixed "Copy all" on terminal tab only working the first time.
- #2406 - Fixed
showTabJS function of about dialog.
- #2426 - Made resend logging to
- #2442 - Don't even import disabled plugins, use a dummy entry for them just like for backlisted plugins. More resilience against misbehaving plugins.
- #2461 - Fixed OctoPrint not properly disconnecting in case of a firmware error.
- #2494 - Fixed
undefinedvalues not saving in the settings.
- #2499 (regression) - Fixed communication error notification lacking the actual error message.
- #2501 (regression) - Fixed a bug causing log downloads to fail with an HTTP 500 error.
- #2506 (regression) - Fixed
dictinstances, causing issues with plugins relying on being able to modify the returned data (e.g. dattas/OctoPrint-DetailedProgress#26).
- #2508 (regression) - Fixed HTTP 500 error on
/api/slicingin case of an unconfigured slicer.
- #2524 - Ignore
waitwhile job is on hold.
- #2536 - Fix a wrong state tracking when starting an SD print through the controller, causing a disconnect due to a timeout.
- #2544 (regression) - Fix an exception when connecting to the raw websocket at
- #2546 (regression) - Fix the
PRINT_FAILEDevent getting triggered twice on print failure due to disconnect
pkg_resourcesto determine pip version during environment check instead of
import pip; pip.__version__since the latter causes issues with pip version 9.0.2. In the same spirit make
pip.mainapproach of calling
pipin the PipCaller the last resort during auto detection, only after trying
pip.exeinside the same folder as the Python executable.
monotonic.monotonicin comm layer.
- Fixed timelapse not stopping on print failure due to firmware error due to missing
- Announcement Plugin: Fixed a missing line break in case of more than three announcements in a notification.
- Docs: Documentation for printer profile related bits and pieces
- Docs: Various fixes of typos and grammar.
OctoPrintJsonEncoderfall back to regular flask JSON encoder, otherwise we might not be able to serialize some data types we need to be able to serialize. (regression)
- #2547 - Error during processing of afterPrintJobDone script will trigger PRINT_FAILED event even though PRINT_DONE event was already triggered
- Release Candidates:
- A special Thank you! to everyone who reported back on these release candidates this time:
aaronkeck, akurz42, andrivet, anthonyst91, arhi, b-morgan, BryanSmithDev, chippypilot, ChrisHeerschap, Crowlord, dforsi, drdelaney, FormerLurker, goeland86, inspiredbylife, jbjones27, jesasi, jneilliii, JohnOCFII, kantlivelong, lnx13, makaper, markwal, MiquelAdell, ml0w, mmotley999, mrhanman, SCiunczyk, tdub415, tedder42, thatjoshguy, wescrockett