Be notified of new releases
Create your free GitHub account today to subscribe to this repository for new releases and build software alongside 31 million developers.Sign up
On OctoPi 0.12? Be sure to have fixed the python environment!
I have gotten some reports that seem to hint at issues people are running into while updating to 1.3.9 on OctoPi 12. Apparently those issues can be fixed by following the steps outlined in this blog post from November 2017.
Still running OctoPrint 1.3.6? Heads-up!
OctoPrint 1.3.9 includes a couple of dependency updates whose update during switch to 1.3.9 are known to trigger an "update failed" message within OctoPrint's update dialog:
The update did in fact succeed and the issue lies with a change in the underlying update mechanism concerning the dependencies. This problem has been fixed in 1.3.7/1.3.8 and versions prior to 1.3.6 aren't yet affected, so there you won't ever see this message there. If you are still running 1.3.6 though and updating from it, simply run the update a second time through Settings > Software Update > "Check for updates" and clicking "Update now" in the reshown update notification.
Running NGINX as reverse proxy? Be sure to configure HTTP protocol version 1.1!
OctoPrint 1.3.9 updates the internal webserver Tornado from 4.0.2 to 4.5.3. Among many many fixes and improvements this also includes a change (actually a fix) in the websocket implementation that requires you to tell your NGINX to use HTTP 1.1 instead of the default 1.0 to talk to OctoPrint. You can do this by simply adding
Disabled IPv6 and now there are issues with the server after the update? Bind to IPv4 addresses only!
Starting with this release OctoPrint natively supports IPv6 and will attempt to bind to such addresses if it detects support in the underlying OS. If for whatever reason your OS doesn't support IPv6 even though Python's
socket says otherwise, you can tell OctoPrint to bind to an IPv4 address only either via the
--host command line parameter or
127.0.0.1 for localhost only,
0.0.0.0 for all IPv4 addresses or whatever specific IPv4 address you want to bind to.
Plugin author and still dependent on the legacy plugin bundling flag? Fix your plugin!
As announced with the release of OctoPrint 1.3.6, the legacy plugin bundling flag has now been removed again. Make sure to check and if necessary fix your plugins if you haven't done that so far!
- #652 & #1545 - Added name of user who started a job to job info (see also #2576).
- #1203 & #1905 & #1797 & #2514 - Added support for plugins to override GCODE analysis provider and live print time estimation with their own implementations through two new hooks
- #1217 - Software Update Plugin: Block the UI in general when an update is in progress (even in browser windows that didn't start it and logged in as user) so that no prints can be accidentally started during that.
- #1513 - Option to allow sending
M1to the printer instead of swallowing it.
- #2318 - Gcode Viewer: Visualize "current" print head location with a marker.
- #2351 - Support for binding to IPv6 addresses. OctoPrint will now default to binding to
::if IPv6 support is detected, and to
0.0.0.0if not. Both the intermediary server and Tornado are instructed to bind their sockets to both IP versions. Positive IPv6 support detection relies on
socket.IPV6_V6ONLYbeing available (or redefined in case of Windows) in order to ensure dual stack binding for the intermediary server)
- #2379 - File and plugin list now use the browser's native scrollbar instead of slimscroll. Slimscroll is still bundled though, in case third party plugins might depend on it.
- #2487 - Improved documentation of system command configuration (see also #2498).
- #2495 - Removed unneeded filter from a template.
- #2498 - Improved documentation of the
asyncflags of custom system commands.
- #2512 - Log files will now contain client IP as provided by first entry in X-Forwarded-For header (or more if
server.reverseProxy.trustDownstreamis configured accordingly).
- #2518 - Display absolute file upload date and time on hover (see also #2630).
- #2522 - Perform logging to disk asynchronously to avoid slow downs caused by it.
- #2541 - Added link to instructions to reset passwords. Part of solving #1239.
- #2543 - Added
--no-cache-dirto pip calls to work around
MemoryErrors. See also #2535 and pypa/pip#2984 for more details.
- #2558 - Have the watched folder processor ignore hidden files.
- #2572 - More error resilience in
ItemListHelperagainst empty child elements.
- #2573 - Added
M118to commands to never automatically upper case.
- #2583 - Handle scripts that are part of a job like other lines coming from a job and thus allow them to be kept back using
- #2597 - Disabled animation on cancel print confirmation.
- #2463 - Added documentation for
gcodeAnalysisdata model (see also #2540).
- #2615 - Allowed more granular control over components to be upgraded through the software update plugin in its settings dialog.
- #2620 - Save
ItemListHelperpage sizes to local storage.
- #2642 - Added methods for adding and updating items to
- #2644 - Detect broken symlinks in configured folders on startup (see also further below).
- #2648 - Allowed class methods as callbacks in view models.
- A new API endpoint
/api/settings/templatesallows (admin only) access to information regarding the loaded templates and their order in the UI. That should allow plugins wishing to offer modification of ordering of tabs, sidebar components and so on to retrieve the data they need for that.
- Have the watched folder processor handle vanished files gracefully.
- Improved requirement detection in
octoprint_setuptools, added unit tests for that.
sockjs-tornadodependency. It hasn't been updated by the author in a while although there exist a number of issues plus patches for them, so we now vendor it.
- Disabled position logging on cancel by default. If you need this, please explicitly enable it, it is causing too many issues in the field with misbehaving firmware.
- Extended URL test API to allow whitelist/blacklist check for the returned content type, used that to verify that the webcam snapshot URL actually returns images.
- Added timeout for position logging on pause/cancel. This should work around firmware which doesn't provide a proper
M114resport that might be unparseable so we won't get stuck in those cases.
- Migrated file storage metadata to json instead of YAML since it performs way way better.
missing linenumberto recognized non-fatal error messages.
- Got rid of some Python 2 only code.
- Added sanity checks for configured folders (see also #2644):
- on startup: check they are writable, if not revert to defaults
- on settings save: check they are writable, if not return an HTTP 400
- in the settings dialog: allow quick check of writability via test buttons
- Never send referrers with links
- Confirmation dialog helper now supports an HTML body.
- Sort serial ports naturally (e.g.
resumedaction commands, see here for details.
- Added two new hooks for firmware information,
- Added view model list to
- Improved logging of
- Add sanity check for disabled plugin list (see also #2687 (comment)).
- Improve logging of exceptions triggered inside the state update worker (see also #2715).
- Workaround for a potential
pipissue when updating components through the Software Update plugin.
- Fix resend and timeout handling during an active
- Updated some dependencies:
- Tornado to 4.5. Version 5 sadly has issues with web socket handling when access behind
haproxy. So far no solution has been found, so we stay at 4.5 for now.
- jQuery to 3.3.1
- Several other Python dependencies
- Tornado to 4.5. Version 5 sadly has issues with web socket handling when access behind
- Announcement Plugin: Don't reload all notifications if one is marked as read.
- Printer Safety Plugin: Added new detected firmwares:
- Anycubic Mega
- Malyan M200
- all Repetier firmware versions prior to 0.92
- any firmware that reports the
THERMAL_PROTECTIONcapability as disabled to thermal protection warning (see also MarlinFirmware/Marlin#10465)
- Software Update Plugin: Default to
force_base = Falsefor version checks.
- Virtual Printer Plugin: Allow defining custom
- #2333 (Part 3/3) - Updated to PySerial 3.4 and utilize read and write cancelling to work around disconnect delays.
- #2355 - Fixed non deterministic sorting of files with missing fields (e.g. date for SD card files) in OctoPrint's frontend.
- #2496 - Fixed files API not allowing to walk through the directory tree unless fetching the full listing recursively by making sure that first level children nodes are always provided.
- #2502 - Fixed some invalid HTML
- #2504 & #2532 & #2552 - Fixed various typos
- #2505 - Fixed user switch to
_apiuser on use of the global API key inside the browser.
- #2509 - Properly handle a printer reset while printing and don't get stuck in "Cancelling" state
- #2517 - Fixed baudrate negotiation with printers that need a bit of a delay between connection establishment and probing (e.g. Prusa MK3).
- #2520 - Fixed temperature presets being saved as strings instead of numbers.
- #2533 - Fixed API key copy button being enabled and generate button being disabled when no API key is set.
- #2534 - Fixed stale data in API key/user editor. See also #2604.
- #2539 - Made serial and baud rate lists consistent between connection panel and settings (see also #2606).
- #2547 - Fixed
PrintFailedbeing triggered in case of an error while processing the
afterPrintJobDoneGCODE script through introduction of
- #2549 - Fixed "uninstall plugin" icon in Plugin Manager staying clickable even if disabled.
- #2549 - Fixed issue with detection uninstallation of disabled plugins (see also #2650).
- #2551 - Fixed
0being allowed for various intervals and timeouts where that values doesn't make sense.
- #2554 - Fixed a JSON example in the docs.
- #2568 - Fixed a dead link in the plugin hooks documentation in the docs.
- #2579 - Fixed print time left of "a couple of seconds" even after the print job has finished.
- #2581 & #2587 - Fixed OctoPrint getting stuck in "Pausing" or "Cancelling" state due to a race condition.
- #2589 - Added missing
typePathfield on API response for files on the printer's SD card.
- #2591 - Fixed markup of some HTML labels.
- #2595 - Fixed some UI appearance issues.
- #2601 - Properly handle relative paths for selection via
- #2621 - Fixed framerate not being read from config for rendering unrendered timelapses.
- #2625 - Fixed incompatibility of OctoPrint's plugin subsystem with Python wheels, which are the default mode of installing plugins from pip version 10.0.0 onward.
- #2632 - Fixed race condition in resend handling on missing
- #2675 - Fixed a possible division by zero on SD upload.
- #2677 (regression) - Fix a deadlock when
job_on_holdis utilized (causing issues at least with Octolapse)
- #2683 - Fixed two missing spaces in the german translation.
- #2715 (regression) - Fix broken estimator initialization on SD print start and resulting crash of the state update worker.
- #2719 (regression) - Fix live print time estimation
- #2737 (regression) - Fix print button being enabled even though no file is selected.
- #2738 (regression) - Limit the use of the
--no-cache-dirargument added to
pipcalls to such versions of
pipthat already support it (anything newer than 1.5.6).
- Properly handle absolute paths for recovery data comparison.
- Fixed snapshot test button not resetting on error.
- Fixed decoupling of metadata logs in the file manager.
- Fixed "remember me" and IPv4/IPv6 sessions. This might also solve #1881.
- Removed Repetier resend repetition detection and handling code. It was buggy and introducing issues.
- Fixed script order:
beforePrint*should always precede any commands from the print job.
- Only perform write tests on directories where necessary. Especially avoid them on page rendition to prevent misconfigured folders from triggering an HTTP 500. (regression)
Special thanks to all the contributors!
- Release Candidates:
- A big Thank you! to everyone who reported back on these release candidates this time:
arhi, b-morgan, brandstaetter, buchnoun, CapnBry, chatrat12, ChrisHeerschap, christianlupus, chrisWhyTea, Crowlord, ctgreybeard, Cyberwizzard, DrJuJu, ejjenkins, fieldOfView, FormerLurker, four-of-four, Galfinite, gege2b, HFMan, jjlink, jneilliii, JohnOCFII, jwg3, kazibole, larp-welt, McFly99, mod38, ntoff, OutsourcedGuru, paukstelis, pingywon, pscrespo, Rapsey, tech-rat, tedder, thess, Thisismydigitalself, tibmeister