@foosel foosel released this Dec 10, 2018 · 5 commits to master since this release

Heads-up for plugin authors regarding the sarge dependency

OctoPrint has updated its sarge dependency. The new version 0.1.5 has a small breaking change - the async keyword was renamed to async_ for compatibility reasons with Python 3.7. This might also affect your plugin if you happen to use sarge somewhere therein. OctoPrint has a workaround for this in place so your plugin will continue to function for now. However, you should look into updating it to use async_ instead of async if running against OctoPrint 1.3.10+.

See also here for the sarge changelog.

Improvements

  • #1504 - Added detection of EMERGENCY_PARSER firmware capability and if it's present add M108 to the cancel procedure, to cancel blocking heatups.
  • #2674 - Improved error handling when the file OctoPrint is currently printing from becomes unreadable.
  • #2698 - Made favicon color match custom theme color.
  • #2717 - Various speed ups of the GCODE viewer.
  • #2723 - Always allow the file analysis to run, even if the slicer does provide analysis data. Allows plugins implementing the analysis hook to override behaviour in all cases.
  • #2729 - Allow additional video formats to appear in the timelapse tab.
  • #2730 & #2739 & #2742 - Improved GCODE analysis speed.
  • #2740 & #2859 - Make the connection panel reflect the current connection parameters.
  • #2769 - Cura Plugin: Improve error handling a profile import fails.
  • #2802 - Updated the temperature filters to ignore more sent and received lines belonging to temperature requests/responses that so far weren't covered.
  • #2806 - Refactored some unit tests.
  • #2827 - Spelling fixes in the documentation.
  • #2839 - Recognize position reports that include a space after the axis, as e.g. observed in the firmware of AlfaWise U20
  • #2854 - Auto detect Teacup firmware.
  • #2865 - Added speed parameter to extrude command on the /api/printer/tool API endpoint which allows to set the feedrate to use for the extrude per request.
  • Improve SD print detection
  • Added the Anonymous Usage Tracking Plugin. Tracking will only take place if the plugin is enabled and you’ve decided to opt-in during initial setup (or enabled it manually afterwards, through the corresponding switch in the settings). The tracking data will give insight into how OctoPrint is used, which versions are running and on what kind of hardware OctoPrint gets installed. You can learn about what will get tracked (if you opt-in) on tracking.octoprint.org. Please consider helping development by participating in the anonymous usage tracking.
  • The OctoPi Support Plugin is now the Pi Support Plugin:
    • Always enabled when running on a Raspberry Pi, regardless of whether OctoPi is used or not.
    • Now detects undervoltage/overheat issues and displays an alert on the UI if such an issue is found.
    • Changed detection method of the Raspberry Pi Model to something a bit more future proof.
  • Added the Application Keys Plugin: The new bundled plugin offers an authorization for third party apps that doesn't involve manually copying API keys or using QR codes. Third party client developers are strongly advised to implement this workflow in their apps. Read more in the documentation.
  • Added the Backup & Restore Plugin: The new bundled plugin will allow you to make a backup of your OctoPrint settings, files and list of installed plugins, and to restore from such a backup on the
    same or another instance. This should make migration paths from outdated installations to newer ones easier.
  • Software Update Plugin: Automatic updates in outdated environments are no longer supported. After repeated issues out in the fields with ancient installations and ancient underlying Python environments, OctoPrint will no longer allow automatic updates of itself or plugins via the Software Update Plugin if a certain set of minimum versions of Python, pip and setuptools isn't detected. The current minimum versions reflect the environment found on OctoPi 0.14.0: Python 2.7.9, pip 9.0.1, setuptools 5.5.1. See also the related FAQ entry.
  • OctoPrint will now longer allow itself to be installed on Python versions less than 2.7.3 or higher than 2.7.x, to avoid peope running into issues in unsupported environments.
  • Protect/educate against the dangers of opening up OctoPrint on the public internet:
    • Detect connections to the UI from external IPs and display a warning in such cases.
    • Added explicit warning to the first run wizard.
    • Added explicit warning to the documentation.
    • Added the ForcedLogin Plugin: Disables anonymous read-only access. To get back the old behaviour you'll have to explicitely disable this plugin.
  • Removed printed/visited layer counts from the GCODE viewer since it was confusing people more than helping them.
  • Added a warning to the documentation re expensive code in gcode hooks.
  • Added the no_firstrun_access decorator.
  • Only disable autoscroll in the terminal when scrolling up, not when scrolling down.
  • Added a new asset type clientjs for JS client library components.
  • Added new options for the showConfirmationDialog UI helper:
    • oncancel: callback to call when the cancel button is pressed
    • noclose: don't allow dismissing/closing the dialog without having chosen to proceed or cancel.
  • Allow further access restrictions on API and Tornado routes by third party plugins.
  • Support using the JS client library with an unset API key.
  • Added documentation for octoprint.util.commandline module
  • More resilience against third party plugins that happily block or kill important startup threads
  • Improved backwards compatibility of the sarge dependency by monkey patching it to support the old async keyword parameter. Plugin authors are still advised to switch to the new async_ parameter if running against sarge>=0.1.5, unmodified plugins should continue to work now however. For reference, OctoPrint 1.3.10 requires sarge==0.1.5post0.
  • Better detection of ipv6 support by the underlying OS.
  • Updated several dependencies to current versions where possible.
  • Announcements Plugin: Add documentation.
  • Anonymous Usage Tracking: Added elapsed time & reason of print failure to tracking (to be able to distinguish cancelled from errored out prints)
  • Anonymous Usage Tracking: Added undervoltage/overheat detection on Pis to tracking (to correlate print failures to power issues, see also #2878).
  • Backup: Exclude generated, logs and watched folders from backup
  • Backup: Use base version for version check on restore
  • Pi Support plugin: Better wording on the "undervoltage & overheat" popover & added a link to the FAQ entry
  • Printer Safety Plugin: Added Ender 3 stock firmware, Micro3D stock firmware and iME firmware to detection

Bug fixes

  • #2629 - Cura Plugin: Fixed wrong gcode snippet being used when slicing against a printer profile with multiple extruders.
  • #2696 - Fixed a comment.
  • #2697 - Fixed documentation regarding unit of estimatedPrintTime field in the analysis result.
  • #2705 - Fixed internal server error on GET request for files on the printer's SD card.
  • #2706 - Fixed a documentation error regarding HTTP status code returned on invalid API key
  • #2712 - Fixed updating via commandline (octoprint plugins softwareupdate:update).
  • #2749 - Fixed empty API key being treated as anonymous API key.
  • #2752 - Only reset timeout to shorter "busy" timeout once the busy configuration command has been sent to the printer.
  • #2772 & #2764 - Stop sending commands to the printer if a fatal error is reported that results in a kill(), even if OctoPrint is configured to keep the connection going on firmware errors.
  • #2774 - Fixed autoscroll in the terminal stopping when switching browser windows or tabs.
  • #2780 - Fixed error when trying to save timeout settings.
  • #2800 - Fixed a conjugation error in the documentation.
  • #2805 - Fixed duplicated method name in a unit test.
  • #2846 - Removed requirement to have messages.pot exist to use babel_extract for translating plugins (see also #2846).
  • #2850 - Fixed a race condition in the web socket causing the push connection to fail (see also #2858).
  • #2852 - Fixed issue with zeroconf announcement failing for the second instance of OctoPrint on the same Linux host due to a name conflict.
  • #2872 (regression) - Fix Timeout when connecting to printer that doesn't send start on connect
  • #2873 (regression) - Fix GCODE viewer no longer being able to load files.
  • #2876 (regression) - Fix semi functional UI when access control is disabled
  • #2879 (regression) - Fix favicon in Firefox
  • #2897 (regression) - Improved error resilience of is_lan_address so an error during its execution no longer nukes requests
  • #2898 (regression) - ForceLogin plugin no longer interferes with websocket messages sent by plugins right on UI load but instead puts them into a (limited) backlog and then sends them out in received order once the user has authenticated on the socket.
  • #2903 - Backup plugin: Support for ZIP64 extensions for large zip files
  • #2903 - Backup plugin: Better error reporting
  • #2908 (regression) - Tracking: Use the file's path instead of just the name for file name hashing.
  • #2920 - Backup plugin: Fix wrong compatibility check logic in plugin install during restore
  • Fixed an issue with collision free SD name detection.
  • Fixed some JS warnings in the GCODE viewer.
  • Fixed wrongly used .error instead of the correct .fail in the UI's logout handler.
  • Fixed the disable_hotends snippet in case of a shared nozzle setup.
  • Logout socket on UI logout
  • Announcements Plugin: Fix an issue with atom feeds.
  • Anonymous Usage Tracking: More error resilience for the wizard to possibly work around issues observed with the first RC (for which sadly no information was provided to reproduce and analyse).
  • Anonymous Usage Tracking: Fixed homepage link in plugin manager
  • Backup: Disable restore on Windows servers where it's not supported thanks to the Windows file system
  • Backup: Fix reporting of restore failure due to version mismatch or other cases of an invalid backup
  • Backup: Fix feedback in UI during restore, start feedback right on upload of backup
  • Printer Safety: Fix localization of warning message
  • Software Update Plugin: Fixed the update button being visible although the update is impossible.
  • Software Update Plugin: More resilience against invalid data in config
  • Software Update Plugin: Fixed version output of CLI update message

Special thanks to all the contributors!

Special thanks to everyone who contributed to this release, especially @BillyBlaze, @bradcfisher, @eyal0, @fieldOfView, @gdombiak, @gerfderp, @hashashin and @tedder for their PRs.

More information

Assets 2

@foosel foosel released this Dec 3, 2018 · 4 commits to rc/maintenance since this release

⚠️ Important note on release candidates

This is a Release Candidate of OctoPrint. It is not a stable release: severe bugs can occur, and they can be bad enough that they make a manual downgrade to an earlier version necessary - maybe even from the command line.

You should be comfortable with and capable of possibly having to do this before installing an RC.

Feedback on this RC

Please provide general feedback on this RC in this ticket. An "All is working fine" is valuable feedback as well because it tells me people are actually testing this RC and just not finding problems with it.

If you run into any obvious bugs, please follow "How to file a bug report" - I need logs and reproduction steps to fix issues, not just the information that something doesn't work.

Thanks!

Improvements

  • Backup: Exclude generated, logs and watched folders from backup
  • Backup: Use base version for version check on restore

Bug fixes

  • #2920 - Backup: Fix wrong compatibility check logic in plugin install during restore
  • Backup: Disable restore on Windows servers where it's not supported thanks to the Windows file system
  • Backup: Fix reporting of restore failure due to version mismatch or other cases of an invalid backup
  • Backup: Fix feedback in UI during restore, start feedback right on upload of backup
  • Printer Safety: Fix localization of warning message

Unreproduced issues

The following issues were reported in RC1 or RC2 but so far have been unreproduced and further data to analyse them is still missing. If you encounter any of them please report back with a fully filled out issue template:

Special thanks to all the contributors!

Special thanks to everyone who contributed to this release candidate and provided full, analysable bug reports.

More information

Assets 2

@foosel foosel released this Nov 28, 2018 · 15 commits to rc/maintenance since this release

⚠️ Important note on release candidates

This is a Release Candidate of OctoPrint. It is not a stable release: severe bugs can occur, and they can be bad enough that they make a manual downgrade to an earlier version necessary - maybe even from the command line.

You should be comfortable with and capable of possibly having to do this before installing an RC.

Feedback on this RC

Please provide general feedback on this RC in this ticket. An "All is working fine" is valuable feedback as well because it tells me people are actually testing this RC and just not finding problems with it.

If you run into any obvious bugs, please follow "How to file a bug report" - I need logs and reproduction steps to fix issues, not just the information that something doesn't work.

Thanks!

Improvements

  • More resilience against third party plugins that happily block or kill important startup threads
  • Improved backwards compatibility of the sarge dependency by monkey patching it to support the old async keyword parameter. Plugin authors are still advised to switch to the new async_ parameter if running against sarge>=0.1.5, unmodified plugins should continue to work now however. For reference, OctoPrint 1.3.10 requires sarge==0.1.5post0.
  • Pi Support plugin: Better wording on the "undervoltage & overheat" popover & added a link to the FAQ entry
  • Printer Safety plugin: Micro3D printers running stock or iMe firmware are now detected as unsafe

Bug fixes

  • #2897 - Improved error resilience of is_lan_address so an error during its execution no longer nukes requests
  • #2898 - ForceLogin plugin no longer interferes with websocket messages sent by plugins right on UI load but instead puts them into a (limited) backlog and then sends them out in received order once the user has authenticated on the socket.
  • #2903 - Backup plugin: Support for ZIP64 extensions for large zip files
  • #2903 - Backup plugin: Better error reporting
  • #2908 - Tracking: Use the file's path instead of just the name for file name hashing.
  • Logout socket on UI logout
  • Tracking: Fixed homepage link

Unreproduced issues

The following issues were reported in RC1 or RC2 but so far have been unreproduced and further data to analyse them is still missing. If you encounter any of them please report back with a fully filled out issue template:

Special thanks to all the contributors!

Special thanks to everyone who contributed to this release candidate and provided full, analysable bug reports.

More information

Assets 2

@foosel foosel released this Nov 13, 2018 · 43 commits to rc/maintenance since this release

⚠️ Important note on release candidates

This is a Release Candidate of OctoPrint. It is not a stable release: severe bugs can occur, and they can be bad enough that they make a manual downgrade to an earlier version necessary - maybe even from the command line.

You should be comfortable with and capable of possibly having to do this before installing an RC.

Feedback on this RC

Please provide general feedback on this RC in this ticket. An "All is working fine" is valuable feedback as well because it tells me people are actually testing this RC and just not finding problems with it.

If you run into any obvious bugs, please follow "How to file a bug report" - I need logs and reproduction steps to fix issues, not just the information that something doesn't work.

Thanks!

Improvements

  • Anonymous Usage Tracking: Added elapsed time & reason of print failure to tracking (to be able to distinguish cancelled from errored out prints)
  • Anonymous Usage Tracking: Added undervoltage/overheat detection on Pis to tracking (to correlate print failures to power issues, see also #2878).
  • Printer Safety Plugin: Added Ender 3 stock firmware to detection
  • Added documentation for octoprint.util.commandline module

Bug fixes

  • #2872 - Fix Timeout when connecting to printer that doesn't send start on connect
  • #2873 - Fix GCODE viewer no longer being able to load files.
  • #2876 - Fix semi functional UI when access control is disabled
  • #2879 - Fix favicon in Firefox
  • Anonymous Usage Tracking: More error resilience for the wizard to possibly work around issues observed with the first RC (for which sadly no information was provided to reproduce and analyse).
  • Softwareupdate: More resilience against invalid data in config

Unreproduced issues

The following issues were reported in RC1 but so far have been unreproduced and further data to analyse them is still missing. If you encounter any of them please report back with a fully filled out issue template:

Special thanks to all the contributors!

Special thanks to everyone who contributed to this release candidate, especially @tedder for his PR.

More information

Assets 2

@foosel foosel released this Nov 6, 2018 · 66 commits to rc/maintenance since this release

Feedback on this RC

Please provide general feedback on this RC in this ticket. An "All is working fine" is valuable feedback as well because it tells me people are actually testing this RC and just not finding problems with it. Thanks!

Heads-up for plugin authors regarding the sarge dependency

OctoPrint has updated its sarge dependency. The new version 0.1.5 has a small breaking change - the async keyword was renamed to async_ for compatibility reasons with Python 3.7. This might also affect your plugin if you happen to use sarge somewhere therein. If so, make sure you to update your plugin to use async_ instead of async (or just use OctoPrint's own octoprint.util.commandline.CommandlineCaller class which takes care of this and various other things).

See also here for the sarge changelog.

Improvements

  • #1504 - Added detection of EMERGENCY_PARSER firmware capability and if it's present add M108 to the cancel procedure, to cancel blocking heatups.
  • #2674 - Improved error handling when the file OctoPrint is currently printing from becomes unreadable.
  • #2698 - Made favicon color match custom theme color.
  • #2717 - Various speed ups of the GCODE viewer.
  • #2723 - Always allow the file analysis to run, even if the slicer does provide analysis data. Allows plugins implementing the analysis hook to override behaviour in all cases.
  • #2729 - Allow additional video formats to appear in the timelapse tab.
  • #2730 & #2739 & #2742 - Improved GCODE analysis speed.
  • #2740 & #2859 - Make the connection panel reflect the current connection parameters.
  • #2769 - Cura Plugin: Improve error handling a profile import fails.
  • #2802 - Updated the temperature filters to ignore more sent and received lines belonging to temperature requests/responses that so far weren't covered.
  • #2806 - Refactored some unit tests.
  • #2827 - Spelling fixes in the documentation.
  • #2839 - Recognize position reports that include a space after the axis, as e.g. observed in the firmware of AlfaWise U20
  • #2854 - Auto detect Teacup firmware.
  • #2865 - Added speed parameter to extrude command on the /api/printer/tool API endpoint which allows to set the feedrate to use for the extrude per request.
  • Improve SD print detection
  • Added the Anonymous Usage Tracking Plugin. Tracking will only take place if the plugin is enabled and you’ve decided to opt-in during initial setup (or enabled it manually afterwards, through the corresponding switch in the settings). The tracking data will give insight into how OctoPrint is used, which versions are running and on what kind of hardware OctoPrint gets installed. You can learn about what will get tracked (if you opt-in) on tracking.octoprint.org. Please consider helping development by participating in the anonymous usage tracking.
  • The OctoPi Support Plugin is now the Pi Support Plugin:
    • Always enabled when running on a Raspberry Pi, regardless of whether OctoPi is used or not.
    • Now detects undervoltage/overheat issues and displays an alert on the UI if such an issue is found.
    • Changed detection method of the Raspberry Pi Model to something a bit more future proof.
  • Added the Application Keys Plugin: The new bundled plugin offers an authorization for third party apps that doesn't involve manually copying API keys or using QR codes. Third party client developers are strongly advised to implement this workflow in their apps. Read more in the documentation.
  • Added the Backup & Restore Plugin: The new bundled plugin will allow you to make a backup of your OctoPrint settings, files and list of installed plugins, and to restore from such a backup on the
    same or another instance. This should make migration paths from outdated installations to newer ones easier.
  • Software Update Plugin: Automatic updates in outdated environments are no longer supported. After repeated issues out in the fields with ancient installations and ancient underlying Python environments, OctoPrint will no longer allow automatic updates of itself or plugins via the Software Update Plugin if a certain set of minimum versions of Python, pip and setuptools isn't detected. The current minimum versions reflect the environment found on OctoPi 0.14.0: Python 2.7.9, pip 9.0.1, setuptools 5.5.1. See also the related FAQ entry.
  • OctoPrint will now longer allow itself to be installed on Python versions less than 2.7.3 or higher than 2.7.x, to avoid peope running into issues in unsupported environments.
  • Protect/educate against the dangers of opening up OctoPrint on the public internet:
    • Detect connections to the UI from external IPs and display a warning in such cases.
    • Added explicit warning to the first run wizard.
    • Added explicit warning to the documentation.
    • Added the ForcedLogin Plugin: Disables anonymous read-only access. To get back the old behaviour you'll have to explicitely disable this plugin.
  • Removed printed/visited layer counts from the GCODE viewer since it was confusing people more than helping them.
  • Added a warning to the documentation re expensive code in gcode hooks.
  • Added the no_firstrun_access decorator.
  • Only disable autoscroll in the terminal when scrolling up, not when scrolling down.
  • Added a new asset type clientjs for JS client library components.
  • Added new options for the showConfirmationDialog UI helper:
    • oncancel: callback to call when the cancel button is pressed
    • noclose: don't allow dismissing/closing the dialog without having chosen to proceed or cancel.
  • Allow further access restrictions on API and Tornado routes by third party plugins.
  • Support using the JS client library with an unset API key.
  • Announcements Plugin: Add documentation.
  • Better detection of ipv6 support by the underlying OS.
  • Updated several dependencies to current versions where possible.

Bug fixes

  • #2629 - Cura Plugin: Fixed wrong gcode snippet being used when slicing against a printer profile with multiple extruders.
  • #2696 - Fixed a comment.
  • #2697 - Fixed documentation regarding unit of estimatedPrintTime field in the analysis result.
  • #2705 - Fixed internal server error on GET request for files on the printer's SD card.
  • #2706 - Fixed a documentation error regarding HTTP status code returned on invalid API key
  • #2712 - Fixed updating via commandline (octoprint plugins softwareupdate:update).
  • #2749 - Fixed empty API key being treated as anonymous API key.
  • #2752 - Only reset timeout to shorter "busy" timeout once the busy configuration command has been sent to the printer.
  • #2772 & #2764 - Stop sending commands to the printer if a fatal error is reported that results in a kill(), even if OctoPrint is configured to keep the connection going on firmware errors.
  • #2774 - Fixed autoscroll in the terminal stopping when switching browser windows or tabs.
  • #2780 - Fixed error when trying to save timeout settings.
  • #2800 - Fixed a conjugation error in the documentation.
  • #2805 - Fixed duplicated method name in a unit test.
  • #2846 - Removed requirement to have messages.pot exist to use babel_extract for translating plugins (see also #2846).
  • #2850 - Fixed a race condition in the web socket causing the push connection to fail (see also #2858).
  • #2852 - Fixed issue with zeroconf announcement failing for the second instance of OctoPrint on the same Linux host due to a name conflict.
  • Fixed an issue with collision free SD name detection.
  • Fixed some JS warnings in the GCODE viewer.
  • Software Update Plugin: Fixed the update button being visible although the update is impossible.
  • Fixed wrongly used .error instead of the correct .fail in the UI's logout handler.
  • Software Update Plugin: Fixed version output of CLI update message
  • Announcements Plugin: Fix an issue with atom feeds.
  • Fixed the disable_hotends snippet in case of a shared nozzle setup.

Special thanks to all the contributors!

Special thanks to everyone who contributed to this release candidate, especially @BillyBlaze, @bradcfisher, @eyal0, @fieldOfView, @gdombiak, @gerfderp, @hashashin and @tedder for their PRs.

More information

Assets 2

@foosel foosel released this Jul 25, 2018 · 301 commits to master since this release

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

proxy_http_version 1.1;

to the location config. The configuration examples have been adjusted accordingly. See also #2526.

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 server.host in config.yaml. Use 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!

Improvements

  • #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 octoprint.filemanager.analysis.factory and octoprint.printer.estimation.factory.
  • #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 M0/M1 to 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.0 if not. Both the intermediary server and Tornado are instructed to bind their sockets to both IP versions. Positive IPv6 support detection relies on
    • socket.has_ipv6 being True
    • socket.IPPROTO_IPV6 and socket.IPV6_V6ONLY being 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 async flags 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.trustDownstream is 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-dir to 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 ItemListHelper against empty child elements.
  • #2573 - Added M118 to 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 job_on_hold.
  • #2597 - Disabled animation on cancel print confirmation.
  • #2463 - Added documentation for printingarea and dimensions in gcodeAnalysis data 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 ItemListHelper page sizes to local storage.
  • #2642 - Added methods for adding and updating items to ItemListHelper.
  • #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/templates allows (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.
  • Removed legacyPluginAssets flag.
  • Improved requirement detection in octoprint_setuptools, added unit tests for that.
  • Bundled sockjs-tornado dependency. 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 M114 resport 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.
  • Added missing linenumber to 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. tty1, tty2, ..., tty10 instead of tty1, tty10, ...)
  • Added paused and resumed action commands, see here for details.
  • Added two new hooks for firmware information, octoprint.comm.firmware.info and octoprint.comm.firmware.capabilities.
  • Added view model list to OctoPrint.coreui UI module.
  • Improved logging of FatalStartupErrors.
  • 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 pip issue when updating components through the Software Update plugin.
  • Fix resend and timeout handling during an active job_on_hold.
  • 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
  • Announcement Plugin: Don't reload all notifications if one is marked as read.
  • Printer Safety Plugin: Added new detected firmwares:
    • Anycubic Mega
    • Malyan M200
    • CR-10S
    • all Repetier firmware versions prior to 0.92
    • any firmware that reports the THERMAL_PROTECTION capability as disabled to thermal protection warning (see also MarlinFirmware/Marlin#10465)
  • Software Update Plugin: Default to force_base = False for version checks.
  • Virtual Printer Plugin: Allow defining custom M114 response formats.

Bug fixes

  • #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 _api user 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 PrintFailed being triggered in case of an error while processing the afterPrintJobDone GCODE script through introduction of Resuming and Finishing states.
  • #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 0 being 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 typePath field 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 printer.select_file.
  • #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 oks.
  • #2675 - Fixed a possible division by zero on SD upload.
  • #2677 (regression) - Fix a deadlock when job_on_hold is 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-dir argument added to pip calls to such versions of pip that 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!

Special thanks to everyone who contributed to this release, especially @benlye, @dadosch, @dforsi, @ganey,@malnvenshorn, @ntoff, @tedder and @vitormhenrique for their PRs.

More information

Assets 2

@foosel foosel released this Jul 20, 2018 · 301 commits to rc/maintenance since this release

Feedback on this RC

Please provide general feedback on this RC in this ticket. An "All is working fine" is valuable feedback as well because it tells me people are actually testing this RC and just not finding problems with it. Thanks!

Bug fixes

  • #2737 (regression) - Fix print button being enabled even though no file is selected.
  • #2738 (regression) - Limit the use of the --no-cache-dir argument added to pip calls to such versions of pip that already support it (anything newer than 1.5.6).
  • Only perform write tests on directories where necessary. Especially avoid them on page rendition to prevent misconfigured folders from triggering an HTTP 500. (regression)

More information

Assets 2

@foosel foosel released this Jul 16, 2018 · 306 commits to rc/maintenance since this release

Feedback on this RC

Please provide general feedback on this RC in this ticket. An "All is working fine" is valuable feedback as well because it tells me people are actually testing this RC and just not finding problems with it. Thanks!

Improvements

  • Fix resend and timeout handling during an active job_on_hold.

Bug fixes

  • #2677 (regression) - Fix a deadlock when job_on_hold is utilized (causing issues at least with Octolapse)
  • #2719 (regression) - Fix live print time estimation

More information

Assets 2

@foosel foosel released this Jul 6, 2018 · 314 commits to rc/maintenance since this release

Feedback on this RC

Please provide general feedback on this RC in this ticket. An "All is working fine" is valuable feedback as well because it tells me people are actually testing this RC and just not finding problems with it. Thanks!

Improvements

  • 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 pip issue when updating components through the Software Update plugin.

Bug fixes

  • #2715 (regression) - Fix broken estimator initialization on SD print start and resulting crash of the state update worker.

More information

Assets 2

@foosel foosel released this Jun 20, 2018 · 324 commits to rc/maintenance since this release

Feedback on this RC

Please provide general feedback on this RC in this ticket. An "All is working fine" is valuable feedback as well because it tells me people are actually testing this RC and just not finding problems with it. Thanks!

Note for upgraders running NGINX as reverse proxy: Be sure to configure HTTP protocol version 1.1

OctoPrint 1.3.8 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

proxy_http_version 1.1;

to the location config. The configuration examples have been adjusted accordingly. See also #2526.

Note for plugin authors

As announced with the release of OctoPrint 1.3.6, the legacy plugin bundling flag has now been removed again. Make sure to check your plugins if you haven't done that so far!

Improvements

  • #485 - Added a progress bar for timelapse rendering (see also #2586).
  • #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 octoprint.filemanager.analysis.factory and octoprint.printer.estimation.factory.
  • #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 M0/M1 to 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.0 if not. Both the intermediary server and Tornado are instructed to bind their sockets to both IP versions. Positive IPv6 support detection relies on
    • socket.has_ipv6 being True
    • socket.IPPROTO_IPV6 and socket.IPV6_V6ONLY being 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 async flags 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.trustDownstream is 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-dir to 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 ItemListHelper against empty child elements.
  • #2573 - Added M118 to 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 job_on_hold.
  • #2597 - Disabled animation on cancel print confirmation.
  • #2463 - Added documentation for printingarea and dimensions in gcodeAnalysis data 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 ItemListHelper page sizes to local storage.
  • #2642 - Added methods for adding and updating items to ItemListHelper.
  • #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/templates allows (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.
  • Removed legacyPluginAssets flag.
  • Improved requirement detection in octoprint_setuptools, added unit tests for that.
  • Bundled sockjs-tornado dependency. 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 M114 resport 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.
  • Added missing linenumber to 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. tty1, tty2, ..., tty10 instead of tty1, tty10, ...)
  • Added paused and resumed action commands, see here for details.
  • Added two new hooks for firmware information, octoprint.comm.firmware.info and octoprint.comm.firmware.capabilities.
  • Added view model list to OctoPrint.coreui UI module.
  • Improved logging of FatalStartupErrors.
  • 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
  • Announcement Plugin: Don't reload all notifications if one is marked as read.
  • Printer Safety Plugin: Added new detected firmwares:
    • Anycubic Mega
    • Malyan M200
    • CR-10S
    • all Repetier firmware versions prior to 0.92
    • any firmware that reports the THERMAL_PROTECTION capability as disabled to thermal protection warning (see also MarlinFirmware/Marlin#10465)
  • Software Update Plugin: Default to force_base = False for version checks.
  • Virtual Printer Plugin: Allow defining custom M114 response formats.

Bug fixes

  • #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 _api user 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 PrintFailed being triggered in case of an error while processing the afterPrintJobDone GCODE script through introduction of Resuming and Finishing states.
  • #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 0 being 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 typePath field 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 printer.select_file.
  • #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 oks.
  • #2675 - Fixed a possible division by zero on SD upload.
  • #2683 - Fixed two missing spaces in the german translation.
  • 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.

Special thanks to all the contributors!

Special thanks to everyone who contributed to this release candidate, especially @benlye, @dadosch, @dforsi, @ganey,@malnvenshorn, @ntoff, @tedder and @vitormhenrique for their PRs.

More information

Assets 2