Recent Releases of octoprint

octoprint - 1.11.2

Click here if you want to help with OctoPrint's funding!

✋ Heads-ups

The heads-ups from 1.11.0 still apply, please read this release's release notes as well for a full picture of what you should be aware of and what changed!

🧩 SimpleApiPlugins can now opt-into enforced authentication on their endpoints, a future version of OctoPrint will require an opt-out to prevent this

Starting with OctoPrint 1.11.2, OctoPrint now ships with a new method SimpleApiPlugin.is_api_protected on its SimpleApiPlugin mixin that, similar to the long existing BlueprintPlugin.is_blueprint_protected, tells OctoPrint whether some basic authentication enforcing should be done by OctoPrint on its endpoints or not.

For now, this method by default will return False, effectively keeping the current behaviour of plugins having to implement their own authentication in SimpleApiPlugin.on_api_get and SimpleApiPlugin.on_api_command. However, this behaviour will change in a future version of OctoPrint (current plan is 1.13.0) to return True instead, effectively enforcing some basic user authentication on all SimpleApiPlugins.

Plugin authors should adjust their plugins now and explicitly opt-into protection by implementing is_api_protected liek this:

python def is_api_protected(self): return True

If this does not work with their plugin, they should explicitly opt out by returning False here (and implement their own authentication as needed).

Plugins that have not yet explicitly implemented the above method will cause a warning to be logged in octoprint.log.

⛈ Issues while updating?

On every new OctoPrint release we see some people run into the same issues with outdated or broken environments all over again. If you encounter a problem during update, please check this collection of the most common issues encountered over the past couple of release cycles first, and test if the included fixes solve your problem.

♻ Changes

🔒 Security fixes

  • File exfiltration possible via upload endpoints, severity Moderate (5.4): OctoPrint versions up until and including 1.11.1 contain a vulnerability that allows an attacker with the FILE_UPLOAD permission to exfiltrate files from the host that OctoPrint has read access to, by moving them into the upload folder where they then can be downloaded from.

The primary risk lies in the potential exfiltration of secrets stored inside OctoPrint's config, or further system files. By removing important runtime files, this could also be used to impact the availability of the host. Given that the attacker requires a user account with file upload permissions, the actual impact of this should however hopefully be minimal in most cases.

See also the GitHub Security Advisory and CVE-2025-48067

  • Denial of Service through malformed HTTP request in OctoPrint, severity Moderate (6.5): OctoPrint versions up until and including 1.11.1 contain a vulnerability that allows any unauthenticated attacker to send a manipulated broken multipart/form-data request to OctoPrint and through that make the web server component become unresponsive. This could be used to effectively run a denial of service attack on the OctoPrint server.

See also the GitHub Security Advisory and CVE-2025-48879

Minor Security fixes

  • Core: Only allow bypassing CSRF protection with a provided API key. Before, OctoPrint would also disable CSRF protection if there was absolutely no session context (e.g. a manual curl request). Also added some E2E tests for that.
  • Application Keys Plugin: Added a strong warning to the application keys dialog that allowing an app to create an appkey will give it the user's permissions. Also added the remote address from which the appkey request is coming from.
  • Application Keys Plugin: Added a rate limit on the app keys request endpoint, to reduce the likelihood of an attacker on the local network spamming the instance with requests that the user then might accidentally allow.

✨ Features & improvements

Core

  • #5158: Pinned the third-party Click dependency to anything but 8.2.0 as that has a bug in how it parses boolean flags, leading to issues with e.g. octoprint user add --admin not working when it is installed.
  • Added a new decorator BlueprintPlugin.limit to decorate endpoints with a rate limiter.
  • Added a method SimpleApiPlugin.is_api_protected to query whether the API endpoints should have some basic authentication added by OctoPrint, similar to BluePrintPlugin.is_blueprint_protected. For now this method will return False (and log a warning to octoprint.log, prompting plugin authors to implement it explicitly). In a future OctoPrint version - current plan is 1.13.0 - this will default to True, enforcing basic protection on all SimpleApiPlugin implementations. See also the corresponding heads-up above.

CI

  • Now building PEP625 confirming sdists & wheels, and no longer building deprecated universal wheels.

🐛 Bug fixes

Core

  • #5156: Fix 403 errors triggered by access_validation_factory due to missing permissions getting turned into HTTP 500.
  • #5161: Fixed the Reverse Proxy Test page not working when pydantic 1.x is installed (Python 3.7).
  • Made octoprint dev plugin:install work with setuptools >= 80.x and legacy plugin packaging.
  • Fixed a typo in an internal method call causing plugin loading errors for specific packaging scenarios.
  • Fixed escaping of whitespace for native grep calls.

Upload Manager Plugin

  • #5162: Fixed sorting by "last printed date".

🎉 Special thanks to all the contributors!

Special thanks to everyone who contributed to this bugfix release!

Also a big thank you to @jacopotediosi for responsibly disclosing the security vulnerabilities fixed in this release.

🔗 More information

  • Commits
  • Release candidates:
    • As this is a bugfix release, there were no release candidates

- Python
Published by foosel 9 months ago

octoprint - 1.11.1

Click here if you want to help with OctoPrint's funding!

✋ Heads-ups

The heads-ups from 1.11.0 still apply, please read this release's release notes as well for a full picture of what you should be aware of and what changed!

⛈ Issues while updating?

On every new OctoPrint release we see some people run into the same issues with outdated or broken environments all over again. If you encounter a problem during update, please check this collection of the most common issues encountered over the past couple of release cycles first, and test if the included fixes solve your problem.

♻ Changes

🔒 Security fixes

Minor Security fixes

  • Core: Thanks to some issues with certain third party translations it was discovered that autoescape doesn't affect strings loaded from translations, specifically any single or double quotes contained therein. Consequently, all places in OctoPrint's template files have been manually escaped using the existing filters edq (for double quoted strings) and esq (for single quoted strings). I will check if it's possible to also add some kind of autoescaping (with manual safe marking) there in a future version, so plugin authors should follow future release notes closely (as always).

✨ Features & improvements

Core

  • #5144: The confirmation dialog when deleting a file can now be disabled. See Settings > Features.
  • #5145: Protect against potential misconfiguration of the reauthentication timeout by making sure it's always >= 0 when checking against it.
  • #5153: It has been made clearer in octoprint.log when the connectivity check is disabled.

🐛 Bug fixes

Core

  • #5149: Fixed a logic error causing connection issues with printers such as Prusa MK3(s) when "wait for start on connect" is disabled.
  • #5151: Fixed a validation error in the comm layer causing a deadlock when trying to connect while there are no serial ports available. Also disabled the connect button when no serial ports are available. The autorefresh in the background that has now been built-in since OctoPrint 1.9.0 should make sure this isn't a big behaviour change. However, in case that you need to refresh the available ports manually you can always use the little reload button on the header of the connection panel.

Achievements Plugin

  • #5148: Fixed the description of the "The Tinkerer" achievement.

🎉 Special thanks to all the contributors!

Special thanks to everyone who contributed to this bugfix release!

🔗 More information

  • Commits
  • Release candidates:
    • As this is a bugfix release, there were no release candidates

- Python
Published by foosel 10 months ago

octoprint - 1.11.0

Click here if you want to help with OctoPrint's funding!

✋ Heads-ups

☝️ OctoPrint 1.11.x is the last OctoPrint to support Python 3.7 and 3.8

Python 3.7 has now been EOL since June 27th 2023, and the maintenance overhead caused by still having to support it is becoming unfeasible. Python 3.8 has now been EOL since October 31st 2024, and it is to be expected that the maintenance overhead will further rise due to that.

As a consequence, OctoPrint 1.11.x is the final OctoPrint version to support both Python 3.7 and 3.8. OctoPrint 1.12.0+ will require at least Python 3.9.

How do you know if you will be affected and need to update? A newly added healthcheck mechanism has been added that will now alert you if your environment is outdated and about to be left behind, and a new FAQ entry is in place to help you figure out how to update your runtime environment.

This will be kept updated, so that you will also receive early warnings about future deprecations this way.

🧩 OctoPrint will now auto-escape all internal templates, plugin authors should opt-in as well!

Starting with OctoPrint 1.11.0, OctoPrint will ship with auto-escaping all injected template variables and other included expressions in its template system. For 1.11.0 and 1.12.0, this will only be done for bundled plugins and those third party plugins that have opted into autoescaping. Starting with OctoPrint 1.13.0 however, third party plugins will have to opt out in order to not have autoescaping enabled on their templates.

A new entry has been added to the FAQ that has further details.

🧩 WebcamProviderPlugin.take_webcam_snapshot has gotten its parameters fixed

If you are the maintainer of a third party plugin using the WebcamProviderPlugin mixin and have implemented its take_snapshot method, be advised that an implementation error in OctoPrint has been fixed and the implementation aligned with the documentation: the method will now be called with the webcamName parameter being a string containing the name of the requested webcam, as documented, not a full webcam configuration object as previously wrongly implemented.

Changes

🔒 Security fixes

  • Severity Moderate (4.3): It was possible to bypass the login redirect and directly access the rendered HTML of certain frontend pages. This was caused by the use of a custom HTTP header that would disable the login redirect on preemptive caching of the frontend HTML, which was not properly stripped from incoming request, thus allowing the same behaviour through manipulating the headers of the requesting browser.

The impact on data exposure was minimal because, typically, data is loaded via API requests that correctly enforce user authentication. In the current codebase, cases where data is directly embedded in the page content are rare. However, one notable exception is the authenticated variant of the reverse proxy test page, which displays the IP addresses of configured reverse proxies.

This has now been fixed by removing the header altogether and implementing the login bypass differently with purely internal flagging.

See also the GitHub Security Advisory and CVE-2025-32788

✨ Features & improvements

Core

  • #833: Added a confirmation to the file delete button in the file list. Bulk deletions can still be done easily via the newly added Upload Manager Plugin, see below.
  • #1313: Added an option for whether to automatically render captured timelapses. Timelapses can now be set to never render automatically, only in case of a successful or only in case of a failed print, and of course also always (the previous behaviour). See also PR#4994.
  • #4864: Added Prusa MMU commands M707 and M708 to default list of commands that should never be auto-uppercased when sent to the printer through the terminal tab. See also PR#5015.
  • #4932: Added support for multi factor authentication (MFA) schemes to OctoPrint's login mechanism. A new plugin type MfaPlugin allows to hook into that through plugins. A first plugin utilizing that plugin type to implement TOTP authentication can be found at OctoPrint/OctoPrint-MfaTotp and is now also available on the plugin repository!
  • #4968: Removed octoprint.server.(loginFromApiKeyRequestHandler|loginFromAuthorizationHeaderRequestHandler) as they were no longer used and undocumented.
  • #4973: Include stack traces with fatal errors. Also make InvalidYaml exceptions more helpful by including the full message from the triggering YAMLError. Also switch to using FATAL instead of ERROR for startup error logging.
  • #4990: Made @ commands case insensitive.
  • #5018: Added support to specify the current extruder as tool for a new target temperature on the API. See also PR#5022.
  • #5036: To make the configuration of trusted (reverse) proxies less confusing and error prone, the server.reverseProxy.trustedDownstream has been renamed to server.reverseProxy.trustedProxies and an additional flag server.reverseProxy.trustLocalhostProxies has been added that will ensure that reverse proxies on localhost will always be trusted if set. A configuration migration is in place to automatically migrate existing configurations to these two new settings.
  • #5063: Added a configurable delay to wait for after print completion & before rendering the just recorded timelapse. If a new print is started while this timer is running, OctoPrint will now enqueue the timelapse for later rendition during idle time. OctoPrint will only start rendering if after the timer has elapsed no new print has been started.
  • #5068: OctoPrint will now recognize .gc~ as a valid GCODE extension.
  • #5072: The search bar has been extended to support an additional user: filter to filter for files uploaded by certain users. Consequently, the core has been adjusted to store the uploading user in the file's metadata, which so far wasn't the case.
  • #5079: Clarified the wording of the "tool doesn't exist" message.
  • #5059: Added an option to allow suppressing the second "hello" command during printer connection initialization.
  • PR#5029: Migrated the code to Pydantic 2.x under Python 3.8+. Since OctoPrint 1.11.0 will be the final version to still support Python 3.7, also added a compatibility layer to be able to use the Pydantic 2.x API under Python 3.7 with Pydantic 1.
  • PR#5054: Fixed two comma splices.
  • PR#5060: Support assigning mapped groups to users based on specific HTTP headers. This is to allow external authentication mechanisms to be put in front of OctoPrint and allow them to be used without manual group assignment in OctoPrint being required on each new user.
  • Refactored the plugin interface to use importlib instead of the outdated vendored imp.py to detect installed plugins from entrypoints.
  • Added some more aliases for the recovery page and the reverse proxy test page. You may now also find the recovery page under /recovery, /rescue/ and /rescue on top of its canonical /recovery/, and the reverse proxy test page under /reverse_proxy_test, /reverse_proxy_check[/], /reverse-proxy-test[/], /reverse-proxy-check[/], /proxy_test[/], /proxy-test[/], /proxy_check[/] and /proxy-check[/] on top of the canonical /reverse_proxy_test/.
  • Switched to ruff for linting & formatting of the code base.
  • Refactored the code base to get rid of any pkg_resources dependencies, switching over the plugin core system to more modern libraries in the shape of importlib and packaging.
  • Added auto-discovery of common plugin assets following the naming scheme <type>/<identifier>.<ext> in the AssetPlugin mixin.
  • Ensured that Tornado errors end up in octoprint.log.
  • Enabled auto-escape of template variables for all of OctoPrint's internal templates, those in bundled plugins and those in third party plugins that have opted into auto-escaping. With OctoPrint 1.13.0, this will become the default! Please also see the heads-up above.
  • Added support for disabling the warnings about serial.log and/or plugin_timings.log being active by setting plugins.logging.serial_log_warning and/or plugins.logging.plugintimings_log_warning to false in config.yaml. This is to support specific setups out there that keep them enabled at all times, disregarding their performance impact.
  • Improved the plugin list logging in octoprint.log. There are now two different lists logged, one for bundled and one for third party plugins, and both also show a counter of total plugins found. This should make for easier checks when looking at logs for certain third party plugins.
  • Made OctoPrint compatible to Python 3.13.
  • Updated several dependencies.

Core UI

  • #4951: Extended the onBeforePrintStart frontend callback to include the file data of the started print file. See also PR#5073.
  • Added data-octoprint-version to the body tag. Will contain the base version (so 1.11.0 for 1.11.0.dev, 1.11.0rc* etc). This should allow for easier CSS matching.
  • Added an additional reload popup that replaces the modal reload overlay on plugin/settings changes, which is way less intrusive and should cause less annoyance.
  • Added support for camel-cased versions of the event callbacks. Allows to create onEventPluginFooTriggered instead of onEventplugin_foo_triggered. The prior callback will also still be checked.
  • Added links to the reverse proxy test page and the recovery page to the loading error view.
  • Gave user settings a fixed minimal height.
  • Adjusted the dropdown submenu CSS to support submenus following their parent's orientation. So if the parent opens on the right of the parent, the submenu will now as well.
  • Changed bytes to B in file size displays using formatSize.
  • Added a helper showTextboxDialog for spawning a text input dialog.
  • Improved the error message for login failures due to CSRF check failure.
  • Custom controls are now read from the settings instead of the dedicated API endpoint, which however will stay for reasons of backwards compatibility.
  • Added a new CSS class for labeled controls in inline forms, control-labeled.

JavaScript Client Library

  • Added tooling to set/delete cookies, OctoPrintClient.setCookie and OctoPrintClient.deleteCookie.

Custom Control Manager Plugin (✨ New!)

Implementing #4526, OctoPrint 1.11.0 now ships with a new bundled plugin called "Custom Control Manager" that will allow you to configure the long existing core feature of custom controls right from within the UI. This plugin is a port of the long abandoned Custom Control Editor plugin by Marc Hannapel. Large parts where completely reimplemented from scratch and the UI and UX saw some heavy changes as well.

Health Check Plugin (✨ New!)

OctoPrint 1.11.0 ships with a new Health Check Plugin that will alert you of any issues with your runtime environment and OctoPrint installation. For now, it checks the following things:

  • sufficient file system storage across all configured data folders
  • OctoPrint's version not being more than two minor versions behind
  • Python version not being EOL or close to EOL

Health checks are kept as unobstrusive as possible in the shape of a little navbar icon. Only high priority issues will cause a popup. Currently that only involves Python versions that are already EOL, and those will only be shown every 30 days (per browser, by the use of a browser cookie).

Additional health checks can be added by plugins through the octoprint.plugin.health_check.get_additional_checks hook.

A forthcoming update of the bundled PiSupport Plugin adds the results of the throttle check, model support and default password use to the set of health checks.

This is one step towards reducing the amount of outdated environments used by people and giving them early heads-ups that they need to update to not be left behind.

Upload Manager Plugin (✨ New!)

OctoPrint 1.11.0 bundles a new plugin "Upload Manager", which is a plugin derived from the long abandoned Filemanager plugin authored by Marc Hannapel.

This Upload Manager can be accessed through a new button in the file list header and allows various bulk operations to more easily manage a growing file collection.

With the availability of this Upload Manager, confirmation dialogs for file deletion have been added, as requested in #833. With the manager in place and thus a bulk deletion that only prompts for confirmation once, this should not interrupt any existing management workflows too much.

Added functionality vs the Filemanager plugin:

  • progress information for bulk operations
  • download of multiple files or folders as zip files
  • multi select with shift/ctrl-click
  • collision detection on file rename
  • various UX improvements

Announcements Plugin

  • Minor styling change for the notification bubble.

Backup Plugin

  • #4961: Fall back to restoring from backup by copying instead of directly unpacking the backed up base dir. This works around issues where the base dir OctoPrint is using is not owned by OctoPrint's process and thus cannot be replaced during the restore.

Classic Webcam Plugin

  • #5016: Added support for basic, digest and bearer authentication schemes on the snapshot URL.

Discovery Plugin

  • The SSDP xml will no longer contain the version of the OctoPrint server. This is to prevent information leakage that could be used for targeted attacks.

Plugin Manager Plugin

  • Added a heads-up about installing third party plugins that needs to be acknowledged by the user prior to being able to install third party plugins via the plugin manager's "Get more" link. This is a one-time message dialog that is meant to educate users about the fact that third-party plugins could cause issues, including security problems, and explain what is done against that.
  • Added the labels from the plugin repository to the list of installed plugins and the built-in plugins in the repository browser. "cloud", "commercial", "free-tier" and an additional "abandoned" label will now be shown next to the plugin as applicable.
  • The Plugin Manager will now create a backup of the plugin export on startup, in the basedir and named backup_plugin_export.json. This might help people recover their installed plugins if all they still have is the basedir.

Software Update Plugin

  • Updated the minimum software versions supported for updating. The minimum versions are now Python 3.7, setuptools 44.1 and pip 20.3. OctoPrint 1.12.0 will update that again.
  • Removed the --no-cache-dir argument from the pip call used to install plugin packages.

Virtual Printer Plugin

  • Support settings M20 to forced upper case.

Documentation

  • PR#5065: Fixed some dead links and improved some wording in the plugin tutorial.
  • PR#5069: Added documentation for the METADATA_STATISTICS_UPDATED event.
  • Updated the developing environment documentation for VSCode.
  • Documented the collapsed attribute on control containers in the custom controls definition.

Development, Testing & CI

  • Added a new command css:watch on the command line that will auto build less files on modification.
  • Added lessc run to pre-commit to ensure all CSS files have been updated.
  • Migrated some more unit tests to pytest.
  • Extracted E2E testing workflow into its own custom composite action to be used with plugins as well and added a README to the E2E test suite.

Improvements done during the release candidate phase

  • Core
    • Improved Tornado and CSRF failure logging.
  • Healthcheck Plugin
    • #5110: Allow to mark reported health check issues as read.

🐛 Bug fixes

Core

  • #5014: Fixed the webcamName parameter of WebcamProviderPlugin.take_snapshot to align with the documentation.
  • #5075: Fixed offset of chamber temperature not being applied properly.
  • Fixed parsing of the filament diameter from GCODE generated by BambuStudio & OrcaSlicer
  • Fixed template sorting
  • Fixed logging of exceptions in WSGI
  • Fixed error reporting on file upload API in case of errors during copy/move
  • Fixed that OctoPrint was sending an M20 without the printer's storage having been detected as available.
  • General code clean-up

Core UI

  • #4963: Upgraded to Font Awesome 6.5 to work around a glyphbox error in Firefox.
  • #5056: Use permission name instead of description as tooltip in the permission list.
  • Fixed a hash sync so that the reload overlay/popup should now no longer show on reconnect if the settings have been changed in any way since initial connect.

JavaScript Client Library

  • Use the first matching cookie in OctoPrintClient.getCookie instead of the last. This is to align the logic with the one found in the backend to reduce the risk of wrong cookie handling due to browser bugs like https://bugzilla.mozilla.org/show_bug.cgi?id=1929881

Achievements Plugin

  • Fixed default groups of custom permission

Classic Webcam Plugin

  • #5076: Fix stopping of the webcam stream on hiding the tab/windows, by replacing its src with a transparent gif instead of setting it to empty.

Error Tracking Plugin

  • Removed an unused API endpoint.

GCODE Viewer Plugin

  • #5080: Fixed rendering of G2/G3 arc commands without I or J.
  • PR#5047: Re-added the web worker API compatibility check, to prevent hard to diagnose issues caused by certain privacy enhancing browser extensions that block said API.
  • Limited skipuntil check to the GCODE_VIEWER permission.

Plugin Manager Plugin

  • Use a temporary folder for plugin archive uploads instead of a temporary file, so that the name of the uploaded file persists. Otherwise wheels can't be installed.

Software Update Plugin

  • Switched the PyPI release check to a new endpoint, as the one so far used was deprecated.
  • Ensured that request errors encountered by the PyPI release check will actually bubble up and be reported to the frontend.

Documentation

  • Fixed a documentation error in the available types for AssetPlugins, the correct keyword for additional parts for the JS Client Library is clientjs, not jsclient.

Fixes done during the release candidate phase

  • Core:
    • #5098 & #5100 (regression): Fixed permission fetch and login_mechanism setting for incoming requests with API keys. This solves the problem with all requests with an API key being responded to with an HTTP status of 403, and any API key based requests not using GET, HEAD or OPTIONS methods with a CSRF validation failure and thus an HTTP Status of 400, breaking communication with most third party clients.
    • #5099 (regression): Fixed templating macros being broken for third party plugins not supporting autoescaping.
    • #5105 (regression): Fix the "Remeber me" functionality
    • #5109: Fix octoprint.systemcommands.SystemCommandManager.has_(server_restart|system_restart|system_shutdown)_command not returning False for empty commands. Not a regression, but a small enough fix to still include in 1.11.0.
    • #5115: Auto discovered assets for the AssetPlugin mixin would be returned containing \ under Windows, leading to 404s when attempting to load them in the browser. This auto discovery is a new feature added in 1.11.0 (used by the bundled Health Check plugin) and thus this was not a regression, but rather a bug in newly added functionality.
    • #5116: Fix a bug with handling JS errors in the webasset bundler.
    • #5117 (regression): Fix warnings logged to the browser console due to mistakes made when upgrading to Font Awesome 6.5.1.
    • #5121 (regression): Fix spamming of requests against /api/files/sdcard/<path> on selecting a file on the printer's SD card. Also added E2E tests for selecting both local and printer-side files.
    • #5125 (regression): Fix reauthentication logic to not log out on reauth. This is actually not a real regression and was present in 1.10.x as well, but changes in 1.11.0 made it almost always trigger vs almost never on 1.10.x (due to some race condition), so it feels like a regression and needed fixing in the RC phase.
    • #5132 (regression): Fix session keepalive not getting started. Side effect of the fix of #5125.
    • Fix a redirect path traversal bug in validate_local_redirect. This in theory could have been abused by some manipulated link to redirect a login to a path on the same server as OctoPrint beyond those marked as safe, e.g. a malicious plugin or an external app on another path. Not a regression, but better fix this now than later. Thanks to @jacopotediosi for the discovery and the suggested fix.
  • Custom Control Manager Plugin
    • #5096: Fixed rendering of horizontal_grid custom control type.
    • #5097: Added missing width/offset configuration.
  • Error Tracking Plugin
    • (regression) Silence some Sentry log spam
    • (regression) Fix an issue in the ignored exception filter causing no errors to be reported

🎉 Special thanks to all the contributors!

Special thanks to everyone who contributed to this RC, especially to @ccatlett1984, @cp2004, @dawidpieper, @endrift, @Hillshum, @its-leofisher, @jacopotediosi, @jneilliii, @MaienM, @nmschulte, @ofoxus, @WildRikku, @WisdomCode and @zaventh for their PRs!

And an extra shoutout to our 10 first time contributors: @ccatlett1984, @endrift, @its-leofisher, @jacopotediosi, @MaienM, @nmschulte, @ofoxus, @WildRikku, @WisdomCode and @zaventh! 🎉

🔗 More information

- Python
Published by foosel 10 months ago

octoprint - 1.11.0rc7

⚠️ 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!

Things to take a closer look at

For this RC, these things should get a closer look while testing, if possible:

  • proper behaviour when using the included web interface as well as any third party clients at your disposal
  • the newly added Custom Control Manager plugin
  • the newly added Health Check plugin
  • the newly added Upload Manager plugin
  • the MFA-TOTP plugin using the new MFA plugin interface
  • timelapse creation, especially with a configured rendering delay
  • remember me functionality

✋ Heads-ups

The heads-ups from 1.11.0rc1 still apply!

🐛 Bug fixes

Core

  • #5132 (regression): Fix session keepalive not getting started. Side effect of the fix of #5125.

🎉 Special thanks to all the contributors!

Special thanks to everyone who contributed to this RC and provided full, analyzable bug reports.

🔗 More information

- Python
Published by foosel 11 months ago

octoprint - 1.11.0rc6

⚠️ 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!

Things to take a closer look at

For this RC, these things should get a closer look while testing, if possible:

  • proper behaviour when using the included web interface as well as any third party clients at your disposal
  • the newly added Custom Control Manager plugin
  • the newly added Health Check plugin
  • the newly added Upload Manager plugin
  • the MFA-TOTP plugin using the new MFA plugin interface
  • timelapse creation, especially with a configured rendering delay
  • remember me functionality

✋ Heads-ups

The heads-ups from 1.11.0rc1 still apply!

🐛 Bug fixes

Core

  • #5125 (regression): Fix reauthentication logic to not log out on reauth. This is actually not a real regression and was present in 1.10.x as well, but changes in 1.11.0 made it almost always trigger vs almost never on 1.10.x (due to some race condition), so it feels like a regression and needed fixing in the RC phase.
  • Fix a redirect path traversal bug in validate_local_redirect. This in theory could have been abused by some manipulated link to redirect a login to a path on the same server as OctoPrint beyond those marked as safe, e.g. a malicious plugin or an external app on another path. Not a regression, but better fix this now than later. Thanks to @jacopotediosi for the discovery and the suggested fix.

Error Tracking Plugin

  • (regression) Silence some Sentry log spam
  • (regression) Fix an issue in the ignored exception filter causing no errors to be reported

🎉 Special thanks to all the contributors!

Special thanks to everyone who contributed to this RC and provided full, analyzable bug reports.

🔗 More information

- Python
Published by foosel 11 months ago

octoprint - 1.11.0rc5

⚠️ 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!

Things to take a closer look at

For this RC, these things should get a closer look while testing, if possible:

  • proper behaviour when using the included web interface as well as any third party clients at your disposal
  • the newly added Custom Control Manager plugin
  • the newly added Health Check plugin
  • the newly added Upload Manager plugin
  • the MFA-TOTP plugin using the new MFA plugin interface
  • timelapse creation, especially with a configured rendering delay
  • remember me functionality

✋ Heads-ups

The heads-ups from 1.11.0rc1 still apply!

🐛 Bug fixes

Core

  • #5121 (regression): Fix spamming of requests against /api/files/sdcard/<path> on selecting a file on the printer's SD card. Also added E2E tests for selecting both local and printer-side files.

🎉 Special thanks to all the contributors!

Special thanks to everyone who contributed to this RC and provided full, analyzable bug reports!

🔗 More information

- Python
Published by foosel 11 months ago

octoprint - 1.11.0rc4

⚠️ 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!

Things to take a closer look at

For this RC, these things should get a closer look while testing, if possible:

  • proper behaviour when using the included web interface as well as any third party clients at your disposal
  • the newly added Custom Control Manager plugin
  • the newly added Health Check plugin
  • the newly added Upload Manager plugin
  • the MFA-TOTP plugin using the new MFA plugin interface
  • timelapse creation, especially with a configured rendering delay
  • remember me functionality

✋ Heads-ups

The heads-ups from 1.11.0rc1 still apply!.

🐛 Bug fixes

Core

  • #5115: Auto discovered assets for the AssetPlugin mixin would be returned containing \ under Windows, leading to 404s when attempting to load them in the browser. This auto discovery is a new feature added in 1.11.0 (used by the bundled Health Check plugin) and thus this was not a regression, but rather a bug in newly added functionality.
  • #5116: Fix a bug with handling JS errors in the webasset bundler.
  • #5117 (regression): Fix warnings logged to the browser console due to mistakes made when upgrading to Font Awesome 6.5.1.

🎉 Special thanks to all the contributors!

Special thanks to everyone who contributed to this RC and provided full, analyzable bug reports, and especially to @Hillshum for their PR!

🔗 More information

- Python
Published by foosel 12 months ago

octoprint - 1.11.0rc3

⚠️ 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!

Things to take a closer look at

For this RC, these things should get a closer look while testing, if possible:

  • proper behaviour when using the included web interface as well as any third party clients at your disposal
  • the newly added Custom Control Manager plugin
  • the newly added Health Check plugin
  • the newly added Upload Manager plugin
  • the MFA-TOTP plugin using the new MFA plugin interface
  • timelapse creation, especially with a configured rendering delay
  • remember me functionality

✋ Heads-ups

The heads-ups from 1.11.0rc1 still apply!.

✨ Features & improvements

Health Check Plugin

  • #5110: Allow to mark reported health check issues as read.

🐛 Bug fixes

Core

  • #5105 (regression): Fix the "Remeber me" functionality
  • #5109: Fix octoprint.systemcommands.SystemCommandManager.has_(server_restart|system_restart|system_shutdown)_command not returning False for empty commands. Not a regression, but a small enough fix to still include in 1.11.0.

🎉 Special thanks to all the contributors!

Special thanks to everyone who contributed to this RC and provided full, analyzable bug reports.

🔗 More information

- Python
Published by foosel about 1 year ago

octoprint - 1.11.0rc2

⚠️ 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!

Things to take a closer look at

For this RC, these things should get a closer look while testing, if possible:

  • proper behaviour when using the included web interface as well as any third party clients at your disposal
  • the newly added Custom Control Manager plugin
  • the newly added Health Check plugin
  • the newly added Upload Manager plugin
  • the MFA-TOTP plugin using the new MFA plugin interface
  • timelapse creation, especially with a configured rendering delay

✋ Heads-ups

The heads-ups from 1.11.0rc1 still apply!.

✨ Features & improvements

Core

  • Improved Tornado and CSRF failure logging.

🐛 Bug fixes

Core

  • #5098 & #5100 (regression): Fixed permission fetch and login_mechanism setting for incoming requests with API keys. This solves the problem with all requests with an API key being responded to with an HTTP status of 403, and any API key based requests not using GET, HEAD or OPTIONS methods with a CSRF validation failure and thus an HTTP Status of 400, breaking communication with most third party clients.
  • #5099 (regression): Fixed templating macros being broken for third party plugins not supporting autoescaping.

Custom Control Manager

  • #5096: Fixed rendering of horizontal_grid custom control type.
  • #5097: Added missing width/offset configuration.

🎉 Special thanks to all the contributors!

Special thanks to everyone who contributed to this RC and provided full, analyzable bug reports.

🔗 More information

Full Changelog: https://github.com/OctoPrint/OctoPrint/compare/1.11.0rc1...1.11.0rc2

- Python
Published by foosel about 1 year ago

octoprint - 1.11.0rc1

⚠️ 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!

Things to take a closer look at

For this RC, these things should get a closer look while testing, if possible:

  • proper behaviour when using the included web interface as well as any third party clients at your disposal
  • the newly added Custom Control Manager plugin
  • the newly added Health Check plugin
  • the newly added Upload Manager plugin
  • the MFA-TOTP plugin using the new MFA plugin interface
  • timelapse creation, especially with a configured rendering delay

✋ Heads-ups

☝️ OctoPrint 1.11.x is the last OctoPrint to support Python 3.7 and 3.8

Python 3.7 has now been EOL since June 27th 2023, and the maintenance overhead caused by still having to support it is becoming unfeasible. Python 3.8 has now been EOL since October 31st 2024, and it is to be expected that the maintenance overhead will further rise due to that.

As a consequence, OctoPrint 1.11.x is the final OctoPrint version to support both Python 3.7 and 3.8. OctoPrint 1.12.0+ will require at least Python 3.9.

How do you know if you will be affected and need to update? A newly added healthcheck mechanism has been added that will now alert you if your environment is outdated and about to be left behind, an a new FAQ entry is in place to help you figure out how to update your runtime environment.

This will be kept updated, so that you will also receive early warnings about future deprecations this way.

🧩 OctoPrint will now auto-escape all internal templates, plugin authors should opt-in as well!

Starting with OctoPrint 1.11.0, OctoPrint will ship with auto-escaping all injected template variables and other included expressions in its template system. For 1.11.0 and 1.12.0, this will only be done for bundled plugins and those third party plugins that have opted into autoescaping. Starting with OctoPrint 1.13.0 however, third party plugins will have to opt out in order to not have autoescaping enabled on their templates.

A new entry has been added to the FAQ that has further details.

🧩 WebcamProviderPlugin.take_webcam_snapshot has gotten its parameters fixed

If you are the maintainer of a third party plugin using the WebcamProviderPlugin mixin and have implemented its take_snapshot method, be advised that an implementation error in OctoPrint has been fixed and the implementation aligned with the documentation: the method will now be called with the webcamName parameter being a string containing the name of the requested webcam, as documented, not a full webcam configuration object as previously wrongly implemented.

✨ Features & improvements

Core

  • #833: Added a confirmation to the file delete button in the file list. Bulk deletions can still be done easily via the newly added Upload Manager Plugin, see below.
  • #1313: Added an option for whether to automatically render captured timelapses. Timelapses can now be set to never render automatically, only in case of a successful or only in case of a failed print, and of course also always (the previous behaviour). See also PR#4994.
  • #4864: Added Prusa MMU commands M707 and M708 to default list of commands that should never be auto-uppercased when sent to the printer through the terminal tab. See also PR#5015.
  • #4932: Added support for multi factor authentication (MFA) schemes to OctoPrint's login mechanism. A new plugin type MfaPlugin allows to hook into that through plugins. A first plugin utilizing that plugin type to implement TOTP authentication can be found at OctoPrint/OctoPrint-MfaTotp and is now also available on the plugin repository!
  • #4968: Removed octoprint.server.(loginFromApiKeyRequestHandler|loginFromAuthorizationHeaderRequestHandler) as they were no longer used and undocumented.
  • #4973: Include stack traces with fatal errors. Also make InvalidYaml exceptions more helpful by including the full message from the triggering YAMLError. Also switch to using FATAL instead of ERROR for startup error logging.
  • #4990: Made @ commands case insensitive.
  • #5018: Added support to specify the current extruder as tool for a new target temperature on the API. See also PR#5022.
  • #5036: To make the configuration of trusted (reverse) proxies less confusing and error prone, the server.reverseProxy.trustedDownstream has been renamed to server.reverseProxy.trustedProxies and an additional flag server.reverseProxy.trustLocalhostProxies has been added that will ensure that reverse proxies on localhost will always be trusted if set. A configuration migration is in place to automatically migrate existing configurations to these two new settings.
  • #5063: Added a configurable delay to wait for after print completion & before rendering the just recorded timelapse. If a new print is started while this timer is running, OctoPrint will now enqueue the timelapse for later rendition during idle time. OctoPrint will only start rendering if after the timer has elapsed no new print has been started.
  • #5068: OctoPrint will now recognize .gc~ as a valid GCODE extension.
  • #5072: The search bar has been extended to support an additional user: filter to filter for files uploaded by certain users. Consequently, the core has been adjusted to store the uploading user in the file's metadata, which so far wasn't the case.
  • #5079: Clarified the wording of the "tool doesn't exist" message.
  • #5059: Added an option to allow suppressing the second "hello" command during printer connection initialization.
  • PR#5029: Migrated the code to Pydantic 2.x under Python 3.8+. Since OctoPrint 1.11.0 will be the final version to still support Python 3.7, also added a compatibility layer to be able to use the Pydantic 2.x API under Python 3.7 with Pydantic 1.
  • PR#5054: Fixed two comma splices.
  • PR#5060: Support assigning mapped groups to users based on specific HTTP headers. This is to allow external authentication mechanisms to be put in front of OctoPrint and allow them to be used without manual group assignment in OctoPrint being required on each new user.
  • Refactored the plugin interface to use importlib instead of the outdated vendored imp.py to detect installed plugins from entrypoints.
  • Added some more aliases for the recovery page and the reverse proxy test page. You may now also find the recovery page under /recovery, /rescue/ and /rescue on top of its canonical /recovery/, and the reverse proxy test page under /reverse_proxy_test, /reverse_proxy_check[/], /reverse-proxy-test[/], /reverse-proxy-check[/], /proxy_test[/], /proxy-test[/], /proxy_check[/] and /proxy-check[/] on top of the canonical /reverse_proxy_test/.
  • Switched to ruff for linting & formatting of the code base.
  • Refactored the code base to get rid of any pkg_resources dependencies, switching over the plugin core system to more modern libraries in the shape of importlib and packaging.
  • Added auto-discovery of common plugin assets following the naming scheme <type>/<identifier>.<ext> in the AssetPlugin mixin.
  • Ensured that Tornado errors end up in octoprint.log.
  • Enabled auto-escape of template variables for all of OctoPrint's internal templates, those in bundled plugins and those in third party plugins that have opted into auto-escaping. With OctoPrint 1.13.0, this will become the default! Please also see the heads-up above.
  • Added support for disabling the warnings about serial.log and/or plugin_timings.log being active by setting plugins.logging.serial_log_warning and/or plugins.logging.plugintimings_log_warning to false in config.yaml. This is to support specific setups out there that keep them enabled at all times, disregarding their performance impact.
  • Improved the plugin list logging in octoprint.log. There are now two different lists logged, one for bundled and one for third party plugins, and both also show a counter of total plugins found. This should make for easier checks when looking at logs for certain third party plugins.
  • Made OctoPrint compatible to Python 3.13.
  • Updated several dependencies.

Core UI

  • #4951: Extended the onBeforePrintStart frontend callback to include the file data of the started print file. See also PR#5073.
  • Added data-octoprint-version to the body tag. Will contain the base version (so 1.11.0 for 1.11.0.dev, 1.11.0rc* etc). This should allow for easier CSS matching.
  • Added an additional reload popup that replaces the modal reload overlay on plugin/settings changes, which is way less intrusive and should cause less annoyance.
  • Added support for camel-cased versions of the event callbacks. Allows to create onEventPluginFooTriggered instead of onEventplugin_foo_triggered. The prior callback will also still be checked.
  • Added links to the reverse proxy test page and the recovery page to the loading error view.
  • Gave user settings a fixed minimal height.
  • Adjusted the dropdown submenu CSS to support submenus following their parent's orientation. So if the parent opens on the right of the parent, the submenu will now as well.
  • Changed bytes to B in file size displays using formatSize.
  • Added a helper showTextboxDialog for spawning a text input dialog.
  • Improved the error message for login failures due to CSRF check failure.
  • Custom controls are now read from the settings instead of the dedicated API endpoint, which however will stay for reasons of backwards compatibility.
  • Added a new CSS class for labeled controls in inline forms, control-labeled.

JavaScript Client Library

  • Added tooling to set/delete cookies, OctoPrintClient.setCookie and OctoPrintClient.deleteCookie.

Custom Control Manager Plugin (✨ New!)

Implementing #4526, OctoPrint 1.11.0 now ships with a new bundled plugin called "Custom Control Manager" that will allow you to configure the long existing core feature of custom controls right from within the UI. This plugin is a port of the long abandoned Custom Control Editor plugin by Marc Hannapel. Large parts where completely reimplemented from scratch and the UI and UX saw some heavy changes as well.

Health Check Plugin (✨ New!)

OctoPrint 1.11.0 ships with a new Health Check Plugin that will alert you of any issues with your runtime environment and OctoPrint installation. For now, it checks the following things:

  • sufficient file system storage across all configured data folders
  • OctoPrint's version not being more than two minor versions behind
  • Python version not being EOL or close to EOL

Health checks are kept as unobstrusive as possible in the shape of a little navbar icon. Only high priority issues will cause a popup. Currently that only involves Python versions that are already EOL, and those will only be shown every 30 days (per browser, by the use of a browser cookie).

Additional health checks can be added by plugins through the octoprint.plugin.health_check.get_additional_checks hook.

A forthcoming update of the bundled PiSupport Plugin adds the results of the throttle check, model support and default password use to the set of health checks.

This is one step towards reducing the amount of outdated environments used by people and giving them early heads-ups that they need to update to not be left behind.

Upload Manager Plugin (✨ New!)

OctoPrint 1.11.0 bundles a new plugin "Upload Manager", which is a plugin derived from the long abandoned Filemanager plugin authored by Marc Hannapel.

This Upload Manager can be accessed through a new button in the file list header and allows various bulk operations to more easily manage a growing file collection.

With the availability of this Upload Manager, confirmation dialogs for file deletion have been added, as requested in #833. With the manager in place and thus a bulk deletion that only prompts for confirmation once, this should not interrupt any existing management workflows too much.

Added functionality vs the Filemanager plugin:

  • progress information for bulk operations
  • download of multiple files or folders as zip files
  • multi select with shift/ctrl-click
  • collision detection on file rename
  • various UX improvements

Announcements Plugin

  • Minor styling change for the notification bubble.

Backup Plugin

  • #4961: Fall back to restoring from backup by copying instead of directly unpacking the backed up base dir. This works around issues where the base dir OctoPrint is using is not owned by OctoPrint's process and thus cannot be replaced during the restore.

Classic Webcam Plugin

  • #5016: Added support for basic, digest and bearer authentication schemes on the snapshot URL.

Discovery Plugin

  • The SSDP xml will no longer contain the version of the OctoPrint server. This is to prevent information leakage that could be used for targeted attacks.

Plugin Manager Plugin

  • Added a heads-up about installing third party plugins that needs to be acknowledged by the user prior to being able to install third party plugins via the plugin manager's "Get more" link. This is a one-time message dialog that is meant to educate users about the fact that third-party plugins could cause issues, including security problems, and explain what is done against that.
  • Added the labels from the plugin repository to the list of installed plugins and the built-in plugins in the repository browser. "cloud", "commercial", "free-tier" and an additional "abandoned" label will now be shown next to the plugin as applicable.
  • The Plugin Manager will now create a backup of the plugin export on startup, in the basedir and named backup_plugin_export.json. This might help people recover their installed plugins if all they still have is the basedir.

Software Update Plugin

  • Updated the minimum software versions supported for updating. The minimum versions are now Python 3.7, setuptools 44.1 and pip 20.3. OctoPrint 1.12.0 will update that again.
  • Removed the --no-cache-dir argument from the pip call used to install plugin packages.

Virtual Printer Plugin

  • Support settings M20 to forced upper case.

Documentation

  • PR#5065: Fixed some dead links and improved some wording in the plugin tutorial.
  • PR#5069: Added documentation for the METADATA_STATISTICS_UPDATED event.
  • Updated the developing environment documentation for VSCode.
  • Documented the collapsed attribute on control containers in the custom controls definition.

Development, Testing & CI

  • Added a new command css:watch on the command line that will auto build less files on modification.
  • Added lessc run to pre-commit to ensure all CSS files have been updated.
  • Migrated some more unit tests to pytest.
  • Extracted E2E testing workflow into its own custom composite action to be used with plugins as well and added a README to the E2E test suite.

🐛 Bug fixes

Core

  • #5014: Fixed the webcamName parameter of WebcamProviderPlugin.take_snapshot to align with the documentation.
  • #5075: Fixed offset of chamber temperature not being applied properly.
  • Fixed parsing of the filament diameter from GCODE generated by BambuStudio & OrcaSlicer
  • Fixed template sorting
  • Fixed logging of exceptions in WSGI
  • Fixed error reporting on file upload API in case of errors during copy/move
  • Fixed that OctoPrint was sending an M20 without the printer's storage having been detected as available.
  • General code clean-up

Core UI

  • #4963: Upgraded to Font Awesome 6.5 to work around a glyphbox error in Firefox.
  • #5056: Use permission name instead of description as tooltip in the permission list.
  • Fixed a hash sync so that the reload overlay/popup should now no longer show on reconnect if the settings have been changed in any way since initial connect.

JavaScript Client Library

  • Use the first matching cookie in OctoPrintClient.getCookie instead of the last. This is to align the logic with the one found in the backend to reduce the risk of wrong cookie handling due to browser bugs like https://bugzilla.mozilla.org/show_bug.cgi?id=1929881

Achievements Plugin

  • Fixed default groups of custom permission

Classic Webcam Plugin

  • #5076: Fix stopping of the webcam stream on hiding the tab/windows, by replacing its src with a transparent gif instead of setting it to empty.

Error Tracking Plugin

  • Removed an unused API endpoint.

GCODE Viewer Plugin

  • #5080: Fixed rendering of G2/G3 arc commands without I or J.
  • PR#5047: Re-added the web worker API compatibility check, to prevent hard to diagnose issues caused by certain privacy enhancing browser extensions that block said API.
  • Limited skipuntil check to the GCODE_VIEWER permission.

Plugin Manager Plugin

  • Use a temporary folder for plugin archive uploads instead of a temporary file, so that the name of the uploaded file persists. Otherwise wheels can't be installed.

Software Update Plugin

  • Switched the PyPI release check to a new endpoint, as the one so far used was deprecated.
  • Ensured that request errors encountered by the PyPI release check will actually bubble up and be reported to the frontend.

Documentation

  • Fixed a documentation error in the available types for AssetPlugins, the correct keyword for additional parts for the JS Client Library is clientjs, not jsclient.

🎉 Special thanks to all the contributors!

Special thanks to everyone who contributed to this RC, especially to @ccatlett1984, @cp2004, @dawidpieper, @endrift, @its-leofisher, @jacopotediosi, @jneilliii, @MaienM, @nmschulte, @ofoxus, @WildRikku, @WisdomCode and @zaventh for their PRs!

And an extra shoutout to our 10 first time contributors: @ccatlett1984, @endrift, @its-leofisher, @jacopotediosi, @MaienM, @nmschulte, @ofoxus, @WildRikku, @WisdomCode and @zaventh! 🎉

🔗 More information

- Python
Published by foosel about 1 year ago

octoprint - 1.10.3

Click here if you want to help with OctoPrint's funding!

✋ Heads-ups

The heads-ups from 1.10.0 still apply, please read this release's release notes as well for a full picture of what you should be aware of and what changed!

The same applies to the heads-up from 1.10.1.

⛈ Issues while updating?

On every new OctoPrint release we see some people run into the same issues with outdated or broken environments all over again. If you encounter a problem during update, please check this collection of the most common issues encountered over the past couple of release cycles first, and test if the included fixes solve your problem.

♻ Changes

🔒 Security fixes

  • Severity Moderate (5.5): OctoPrint versions up until and including 1.10.2 are vulnerable to reflected XSS vulnerabilities through its Jinja2 template system, as this is not configured to enforce automatic escaping. This affects, among other places, the login dialog and the standalone application key confirmation dialog.

An attacker who successfully talked a victim into clicking on or through a malicious third party app successfully redirected a victim to a specially crafted link could use this to retrieve or modify sensitive configuration settings, interrupt prints or otherwise interact with the OctoPrint instance in a malicious way.

The above mentioned specific vulnerabilities of the login dialog and the standalone application key confirmation dialog have been fixed in 1.10.3 by individual escaping of the detected locations. A global change throughout all of OctoPrint's templating system with the upcoming 1.11.0 release will handle this further, switching to globally enforced automatic escaping and thus reducing the attack surface in general.

The latter will also improve the security of third party plugins. During a transition period, third party plugins will be able to opt into the automatic escaping. With OctoPrint 1.13.0, automatic escaping will be switched over to be enforced even for third party plugins, unless they explicitly opt-out.

See also the GitHub Security Advisory and CVE-2024-49377.

  • Severity Moderate (5.3): OctoPrint versions up until and including 1.10.2 contain a vulnerability that allows an attacker that has gained temporary control over an authenticated victim's OctoPrint browser session to retrieve/recreate/delete the user's or - if the victim has admin permissions - the global API key without having to reauthenticate by re-entering the user account's password.

An attacker could use a stolen API key to access OctoPrint through its API, or disrupt workflows depending on the API key they deleted.

See also the GitHub Security Advisory and CVE-2024-51493.

Minor Security fixes

  • Core, PR#5070: Use secrets lib to generate Flask secret key, API keys and user session IDs.

  • Discovery Plugin: Removed version number from discovery.xml of SSDP discovery. Combats information leakage.

  • GCODE Viewer Plugin: Limited access to skip_until check API to available GCODE_VIEWER and FILES_DOWNLOAD permissions. Combats information leakage.

🐛 Bug fixes

Core

  • #5036: Fixed a typo where the config setting server.reverseProxy.trustedUpstream was used instead of server.reverseProxy.trustedDownstream. Also made the SockJS trusted proxy check align with that of Flask & Tornado.
  • #5049: Fixed file list cache being created before all extension tree providing plugins have had a chance to act.

Plugin Manager

  • #5057: Fixed dequeuing of plugin installs. See also PR#5061.

🎉 Special thanks to all the contributors!

Special thanks to everyone who contributed to this bugfix release, especially to @jneilliii and @jacopotediosi for their PRs!

Also a big thank you to @jacopotediosi for responsibly disclosing the security vulnerabilities fixed in this release.

🔗 More information

  • Commits
  • Release candidates:
    • As this is a bugfix release, there were no release candidates

- Python
Published by foosel over 1 year ago

octoprint - 1.10.2

Click here if you want to help with OctoPrint's funding!

✋ Heads-ups

The heads-ups from 1.10.0 still apply, please read this release's release notes as well for a full picture of what you should be aware of and what changed!

The same holds true for the heads-ups from 1.10.1 which you can find here.

⛈ Issues while updating?

On every new OctoPrint release we see some people run into the same issues with outdated or broken environments all over again. If you encounter a problem during update, please check this collection of the most common issues encountered over the past couple of release cycles first, and test if the included fixes solve your problem.

♻ Changes

🐛 Bug fixes

Core

  • #5002: Fix a translation string in the german translation.
  • #5019: Fix/workaround for a third party dependency change, breaking the octoprint dev plugin:new command.
  • #5021: Fix behaviour of "Hide successful prints" filter in the file list. Folders will be shown as long as they have at least one file in them that has not been printed successfully yet, and they will also be shown if they contain the currently selected file, regardless of the amount of successful prints.
  • Fix an import to be compatible to Jinja2>=3.1.3.
  • Pin pydantic to 1.10.16 to work around an issue with Python 3.12.4.

Achievements Plugin

  • #5017: Fix a string in the german translation that caused the Achievements overview to not correctly render if german language was selected.
  • #5027: Fix description of the Adventurer achievement
  • Fix event processing if the backup or plugin manager plugins are disabled.

🎉 Special thanks to all the contributors!

Special thanks to everyone who contributed to this bugfix release!

🔗 More information

  • Commits
  • Release candidates:
    • As this is a bugfix release, there were no release candidates

- Python
Published by foosel over 1 year ago

octoprint - 1.10.1

Click here if you want to help with OctoPrint's funding!

✋ Heads-ups

The heads-ups from 1.10.0 still apply, please read this release's release notes as well for a full picture of what you should be aware of and what changed!

These heads-ups were added:

🔒 If you use autologin and have additional reverse proxies in front of OctoPrint, make sure they are configured correctly

If you have autologin enabled (which means OctoPrint will log you in automatically if you are accessing it from a local address), it is of utmost importance to properly configure any reverse proxies in front of OctoPrint so that the client IP can be determined correctly.

If you are accessing OctoPrint through haproxy as shipped on OctoPi, or behind a reverse proxy configured following one of the reverse proxy example configurations, there should be no issue. However, if you yourself have added any additional reverse proxies in front of OctoPrint, make sure those are configured correctly.

Please read more about this in the FAQ.

⛈ Issues while updating?

On every new OctoPrint release we see some people run into the same issues with outdated or broken environments all over again. If you encounter a problem during update, please check this collection of the most common issues encountered over the past couple of release cycles first, and test if the included fixes solve your problem.

♻ Changes

🔒 Security fixes

  • Severity High (7.1): It was possible for an unauthenticated attacker to completely bypass the authentication if the autologinLocal option was enabled within the Access Control configuration, even if they came from networks that were not configured as localNetworks, by spoofing their IP via the X-Forwarded-For header.

Please note that this does not affect you unless you've enabled the autologinLocal feature (it ships as disabled by default and requires adjusting the config.yaml file to enable, or the installation of a third party plugin that does this for you). It likely also doesn't affect you if you have enabled said feature but have OctoPrint only accessible on a trusted network.

If you have autologinLocal enabled and your OctoPrint instance is reachable from a hostile network like the internet, e.g. through a port forward, this does affect you and you need to update ASAP. Until you are able to update, it is strongly recommended to disable the autologin feature and/or make your instance inaccessible from potentially hostile networks.

See also the GitHub Security Advisory and CVE-2024-32977.

✨ Features & improvements

Core

  • #4975: Reserved temperature identifiers not confirmed as supported but still sent by the printer's firmware will now only cause a warning log entry in octoprint.log on their first occurrence during a connection, not every time a temperature report is received. This is to combat log spam in case of firmware bugs and misconfiguration.
  • #5003: Make the ticks on the temperature graph's timeline automatically scale with the cutoff to keep the graph readable even with several hours of history.
  • Revert back to the netifaces dependency. While netifaces2 as used in 1.10.0 works well, it is sadly causing some build issues in the field. In the interest of giving as many people as possible access to any bug and especially security fixes, we are thus reverting to the (unmaintained) netifaces for now and keeping an eye on the wheel availability and compatibility of netifaces2 for a future rollout.

Achievements Plugin

  • #5007: Clarify the requirement to properly configure the timezone and allow to reset all or only the time based achievements.
  • Clarify that the Achievements Plugin is a plugin that can be disabled, if one doesn't want to have achievements.

🐛 Bug fixes

Core

  • #4952: Uploading multiple files through the web interface will now also work if printer side SD support has been disabled (see also PR#4953).
  • #4993: Fix resource consumption and server performance issues caused by a busy loop in the GCODE analysis.
  • PR#4996: Fix screenreader role on tabs to enable keyboard navigation
  • #5004: Fix drag'n'drop file uploading in Safari.
  • #5005: Fix netmask & external address detection.

Achievements Plugin

  • Fix the quote of the "One small step for (a) man" achievement to match NASA's official transcript.
  • Use configured timezone for internal stats as well.

Application Keys Plugin

  • #5001: Fix regular user's (non-admins) not being able to revoke application keys.

🎉 Special thanks to all the contributors!

Special thanks to everyone who contributed to this bugfix release, especially to @cp2004 and @dawidpieper for their PRs!

Also a big thank you to @jacopotediosi for responsibly disclosing the security vulnerability fixed in this release.

🔗 More information

  • Commits
  • Release candidates:
    • As this is a bugfix release, there were no release candidates

- Python
Published by foosel almost 2 years ago

octoprint - 1.10.0

Click here if you want to help with OctoPrint's funding!

✋ Heads-ups

🔒 You will now be expected to re-enter your password on critical operations

This version of OctoPrint requires you to reauthenticate with your password every five minutes on various critical operations you might do on your installation, e.g. adding, changing and deleting users, adding, changing and deleting groups, installing plugins, revealing the deprecated global API key, generating, revoking, revealing and granting application keys, accessing the recovery page and downloading or restoring backups. This change matches best practices with regards to security of web applications and was done in order to protect you from various potential attack vectors.

If you do not want this reauthentication requirement, you can find information on how to disable it in the configuration docs. Be aware though that by doing so you'll negatively impact your installation's security!

☝️ Slow update if your Pi is still running pip <= 20.3 (e.g. as shipped on early OctoPi 0.18 preview versions)

During the release candidate phase we found that if your OctoPrint installation still is using a pip version below 20.3, updating to this version will take slightly longer than usual due to having to compile a third party dependency that got updated (zeroconf), as these ancient pip versions are not fetching the precompiled version from piwheels in this scenario. If you are affected, plan ahead accordingly and allow some time for the update or alternatively update pip (you can do that via the Software Update plugin's settings). Most of you however should not be affected by this at all. If you are not running a prerelease version of OctoPi 0.18.0 (the stable release of 0.18.0 is fine!), you are likely not affected by this.

⛈ Issues while updating?

On every new OctoPrint release we see some people run into the same issues with outdated or broken environments all over again. If you encounter a problem during update, please check this collection of the most common issues encountered over the past couple of release cycles first, and test if the included fixes solve your problem.

♻ Changes

🔒 Security fixes

  • Severity Moderate (4.2): It was possible for admins to perform password changes for their own account or others via the Settings dialog without having to re-enter their password. A malicious administrator or an attacker having taken over an administrator's session could have used this to effectively lock out users from their accounts.

This has now been fixed by introducing a reauthentication requirement on changing passwords in the Settings. Unless the user has authenticated with their password (and other credentials possibly in the future) in the past 5min of their login session, a reauthentication dialog to re-enter the credentials will be shown, and only after that has done properly will the request work. This reauthentication dialog has also been added to other critical operations (adding, changing and deleting users, adding, changing and deleting groups, installing plugins, revealing the deprecated global API key, generating, revoking, revealing and granting application keys, accessing the recovery page). The reauthentication timeout of 5min is configurable via config.yaml, see the documentation.

See also the GitHub Security Advisory and CVE-2024-23637.

  • Severity Moderate (4.0): It was possible for a malicious admin to configure or to talk a victim with admin rights into configuring a webcam snapshot URL which when tested through the "Test" button included in the web interface would execute JavaScript code in the victim's browser when attempting to render the snapshot image. An attacker who successfully talked a victim with admin rights into performing a snapshot test with such a crafted URL could use this to retrieve or modify sensitive configuration settings, interrupt prints or otherwise interact with the OctoPrint instance in a malicious way.

This has now been fixed by properly sanitizing the data received from the snapshot URL.

See also the GitHub Security Advisory and CVE-2024-28237.

✨ Features & improvements

Core

  • #4586: Added the capability report of the firmware as returned from M115 to octoprint.log and also the systeminfo bundle in shape of a new m115.txt file that gets generated if the bundle gets created while there's an active printer connection.
  • #4617: Added a manual refresh button to the webcam view that allows to reload the underlying webcam stream (if webcam plugin supports that by having implemented onWebcamRefresh in its viewmodel, otherwise the button will be a no-op). Only gets made visible when hovering over the webcam.
  • #4681: Added information on old and new file to the "file already exists dialog". See also PR#4721.
  • #4685: Implemented a custom versioning tool to replace the so far used customized version of versioneer that has gotten quite long in the tooth. It should behave the same, but with way less code to keep maintained.
  • #4714: Added a new dialog that gets displayed when the printer reports an unrecoverable error, containing the error message, what happened due to that error (print cancellation, disconnect), if available a link to an FAQ entry, the last lines of communication and a big reminder that printer errors are printer errors and not OctoPrint's fault. The dialog will be automatically opened on connected clients, however it can also be accessed later by clicking on the new error icon added to the printer state panel.
  • #4747: Made temperature graph time axis always show the configured cutoff interval. That should prevent any jumping of events.
  • #4760: Made OctoPrint compatible to Python 3.12.
  • #4764: Refactored the Tornado/WSGI interface based on the current Tornado code to make it async. That fixed the issue with connection reuse and as a very welcome side effect also very much increased the performance of the internal web server in general. Long running Flask endpoints now should no longer be able to fully block Tornado, and requests can get parallelized by the frontend, leading to a large reduction of time needed to fully load the UI.
  • #4838: Improved performance of the internal settings data structure, reducing the initial settings fetch right after a server start from 2s+ to 400-700ms.
  • #4843: Made the upload drop zone an optional feature that can be disabled in the settings. See also PR#4853.
  • #4866: Added axis labels to model size info. See also PR#4898.
  • #4880: Removed scripts folder from repo.
  • #4881: Display an error popup in case of startup issues due to inaccessible application directories.
  • #4892: Keep tool change controls enabled while printing.
  • #4921: Added graph markers for the Connected and Disconnected events to the temperature graph.
  • PR#4743: Migrate from netifaces to the pretty much drop-in replacement netifaces2, since the former has been abandoned.
  • PR#4752: Send initial history message when the web socket subscription is changed.
  • PR#4820: Added file and print head position to paused and cancel event & log entries.
  • PR#4833: Improved first run wizard safety hints. They are now visually more alerting and the wizard now also requires the user to acknowledge having read and understood each warning by checking a checkbox.
  • PR#4874: Added new Thermal Malfunction error to recognized as a kill inducing error on Marlin.
  • PR#4899: Removed the upper version pin for the argon2-cffi dependency.
  • PR#4918: Made target temperature lines in the temperature graph dashed. Improves accessibility for color blind users.
  • PR#4928: Further improve screen reader accessibility.
  • Use a file <basefolder>/.incomplete_startup to flag an incomplete startup instead of a config.yaml entry. Makes it easier to reconfigure the server in CI situations.
  • Improved the UX of the systeminfo CLI. octoprint systeminfo will now generate a bundle in the current directory even without an explicitly added . parameter. octoprint systeminfo --short has been added to generated an abridged version directly on the command line. This should clear up issues we saw in the past where people forgot the . and then just pasted the abridged text only version when in fact a bundle was needed and requested.
  • Added progress to PrintFailed, PrintCancelled and PrintPaused events.
  • Added operation to FileRemoved event. Allows distinguishing between a removal due to an actual remove or a move.
  • Added a funding banner to the About dialog and a funding link to the footer.

Achievement Plugin (✨ New!)

Added a new bundled Achievements plugin! OctoPrint will now internally record some instance stats and monitor some events and based on that give out various achievements. This version contains 36 achievements, 22 of which are hidden and for you to be discovered. Additionally, the instance stats are also being recorded per year to make it possible in the future to give you some yearly stats overview of your OctoPrint and printing use.

Unlocked achievements are also tracked via the Anonymous Usage Tracking. Of course, this can be disabled, and if you have not opted into tracking in the first place, nothing will be tracked, as always. Achievement stats are available on data.octoprint.org.

The goal of these achievements is not to gamify OctoPrint, but rather to give you something fun while also making it more visible how this project is funded and how you can help. If you are not interested in achievements, just disable the bundled Achievements plugin via the plugin manager.

Action Command Notification Plugin

  • #4326: Added ability to ignore incoming printer notifications based on a filter regex. This is to combat notification spam by firmwares which abuse the feature. Please talk to your firmware provider about not abusing the notification action command for things triggered by the user, e.g. mirroring M117 commands! See also PR#4886.

Application Keys Plugin

  • #4894: Added application key details incl. QR Code to user settings. See also PR#4895.

Classic Webcam Plugin

  • #4837: Apply the selected camera aspect ratio to its video tag.

Discovery Plugin

  • Updated the zeroconf dependency.

Event Manager Plugin

  • #4869: Added UI support for events with multiple triggers. See also PR#4851.

Plugin Manager Plugin

  • Removed an unused variable.

Software Update Plugin

  • #4819: OctoPrint will now be clearly marked as not updateable when running on Windows.

Virtual Printer Plugin

  • PR#4799: Added support for generating an area report as part of the response to M115.
  • Made the simulated errors configurable via the settings.

Documentation

  • #4787: Added a note to the documentation of the SettingsPlugin mixin that updating settings will trigger a reload screen.
  • #4852: Updated the plugin tutorial to reflect current CLI outputs.
  • PR#4823: Slight improvement on the pause GCODE script.

Testing & CI

  • #4908: Automatically publish release build artifacts on GitHub Releases as well as PyPI. Also automatically publish source tarball.
  • Updated the node-qunit-puppeteer version to combat some JS unit test flakyness.
  • Run the E2E tests against the lowest and highest supported Python version, to make sure things work on both edge cases.
  • Updated playwright used for the E2E tests.

Improvements done during the release candidate phase

  • Core
    • #4957: Bump websocket-client dependency to version 1.6.1, after verifying that it should still work with Python 3.7 in this version, to enable third party plugins to use bug fixes included in that version.
    • PR#4964: Harden the filename sanitization in the download_file function against possible path traversal issue in future use cases.
    • Use aria-label and role instead of sr-only headings, resolving issues with the UI Customizer Plugin or other heavy CSS manipulation.
    • Use a reload popup instead of a blocking overlay modal on UI plugin and/or settings change. That should reduce the annoyance of the reload overlay popping up due to settings updates in the background. It should also help with the reload prompts sometimes observed during the newly introduced reauthentication workflow.
    • Improve JS error reporting in Firefox.
  • Backup Plugin
    • Require credential recheck for download & restore.
  • Testing & CI
    • #4908: Also automatically publish a source tarball upon release.
    • Fix a potential race condition that might have caused some build errors recently.

🐛 Bug fixes

Core

  • #4719: Normalize paths in file manager methods and called hooks and events.
  • #4753: Fixed an error when attempting to set a custom logging level under certain circumstances.
  • #4756: Fixed including variables in GCODE scripts from more than one plugin. See also PR#4757.
  • #4769: Fixed a translation error in the included german language files. See also PR#4897.
  • PR#4794: Protect against issues when a double slash is contained in the timelapse base folder, leading to not being able to delete timelapses.
  • #4800: Fixed folder sorting by date of last print.
  • #4808: Fixed wrong initial field set in printer state (printTimeOrigin instead of the correct printTimeLeftOrigin).
  • #4812: Fixed octoprint systeminfo .
  • PR#4830: Fixed translateability of the filament usage information in the state panel.
  • #4835: Fixed octoprint get not properly returning sub trees for plugin settings hierarchies, due to a missing initialization.
  • #4841: Fixed a broken knockout binding in the GCODE Viewer's size warning dialog, leading to the file name missing. See also PR#4842.
  • #4843: Don't trigger the drop zone for uploading files when not dragging files. Fixes issues when accidentally dragging selected text and similar.
  • #4867: Fixed a warning about using the old webcam settings access path.
  • #4903: Hardened temperature offset code against empty temperature commands and added logging for such cases.
  • #4922: Fixed sorting of folder list in "move or rename file" dialog.
  • #4929: Fixed a regression in the webcam styles that caused issues with the (abandoned) third party plugin TouchUI. See also PR#4930.
  • Keep updating the temperature graph with empty entries even while disconnected, to ensure events shown there properly reflect their point in time from "now".
  • Enabled CORS on asset plugins.
  • Fixed some warnings in the vendored awesome-slugify dependency.

Classic Webcam Plugin

  • #4885: Fixed snapshot timeout & SSL validation settings.

Discovery Plugin

  • #4814: Join multicast group for SSDP discovery on all available addresses. Fixes issues with discovery on VLAN enabled hosts.

Plugin Manager Plugin

  • Properly handle unset plugin versions in plugin notifications from the repository, e.g. when attempting to load notifications for a bundled plugin (which normally shouldn't happen, but turned out to happen during development thanks to an identifier clash).

Software Update Plugin

  • Fixed httpheader check type. It was not storing its current value properly.

Virtual Printer Plugin

  • #4907: Fixed a race condition related to G4 and wait.

Documentation

  • #4906: Adjusted documentation to reflect correct name for logsViewModel dependency.
  • PR#4815: Updated documentation of PrinterInterface.set_temperature to reflect the current implementation.
  • PR#4868: Removed some repeating words.
  • Clarify how to reconfigure log formatters. OctoPrint now either uses simple or colored formatters for the console log output, this still needed to get properly documented.

Fixes done during the release candidate phase

  • Core
    • #4939 (regression): Fix drag'n'drop initialization.
    • #4940 (regression): Make octoprint._version backward compatible enough again to work around use on OctoPi images and third party plugins out there.
    • #4941 (regression): Fix some syntax under Python 3.7 & 3.8.
    • #4942 (regression): Fix handling of setting an empty dict on the configuration. Also added a unit test for this.
    • #4943 (regression): Fix fetching of file details for the existence check, preventing the "file already exists" dialog from making the correct checks.
    • #4966 (regression): Fix handling of the reauthentication workflow for external users created & logged in from a configured header.
    • #4969 (regression): Fix the final page of the firstrun wizard interfering with the completion of arbitrary wizards from plugins, when not even shown.
    • #4980: Fix missing temperature history for anything but the first extruder. This was actually not a regression, but the bug only could be seen now after extending the timeline of the temperature graph to the full available history.
    • #4983 (regression): Fix prefix caching for custom defaults. Manifested in no longer being able to select release channels in the Software Update plugin.
    • #4987 (regression): Fix creation of the static version file during installation of sdist under Windows.
    • Removed a left-over from the Access Control settings panel.
    • Properly reflect that users logged in from a configured header can't log out through the logout button but rather must log out by closing the browser.
  • Achievements Plugin
    • #4984: Make the "Mass Production" achievement detect modifications of the file.
    • Fix the "Heavy Chonker" achievement.
    • Fix the default groups for the achievement permission.
  • Action Command Notification Plugin
    • #4967 (regression): Fix the filter logic so that an empty filter regex won't lead to all notifications to be filtered out.
  • GCODE Viewer
    • #4978: Fix reloading of the same file. First thought to be a regression, turned out to not be one but was a low hanging fruit.

🎉 Special thanks to all the contributors!

Special thanks to everyone who contributed to this RC, especially to @0r31, @bigfoxtail, @CMR-DEV, @cociweb, @cperrin88, @credomane, @crysxd, @danielkucera, @dawidpieper, @eumiro, @evanwurden, @hynek, @jatin-47, @jneilliii , @kaenguruhs, @mad73923, @max246, @MichaIng, @mintsoft, @neod123 and @thinkyhead for their PRs!

And an extra shoutout to our 13 first time contributors: @bigfoxtail, @CMD-DEV, @cociweb, @cperrin88, @credomane, @danielkucera, @evanwurden, @hynek, @jatin-47, @kaenguruhs, @mad73923, @mintsoft and @neod123! 🎉

Also a big thank you to @tkruppert and @jacopotediosi for responsibly disclosing the security vulnerabilities fixed in this release.

☝️ Known issues

The following issues were discovered in earlier versions, but too late to still be fixed in this version, and are going to get a fix in an upcoming bugfix release.

  • #4952: Upload of multiple files is impossible if SD support is disabled. Keep SD support enabled for now if you want to upload more than one file at once via the web UI.
  • #4975: Reserved identifiers in the temperature reports from the printer lead to a warning getting logged each time instead of just once, which can increase the log file with broken firmware implementations. Avoid firmware reporting reserved identifiers, e.g. reporting a chamber temperature while also marking a chamber as not available as observed on current Prusa XL firmware builds.
  • #4993: A bug in the GCODE analyser implementation can cause the server to get blocked if a lot of files need to get analysed at once during startup or due to a bulk upload. For now it is strongly suggested to limit the amount of freshly added files to a max of 10 at once and/or be aware of the server being very busy for a few minutes after larger numbers of added files.

🔗 More information

- Python
Published by foosel almost 2 years ago

octoprint - 1.10.0rc4

⚠️ 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!

Things to take a closer look at

For this RC, these things should get a closer look while testing, if possible (things newly added in this follow-up RC marked with :new:):

  • Proper behaviour when using the included web interface as well as any third party clients at your disposal.
  • User and group management functioning as expected.
  • Plugin installation functioning as expected.
  • Application key management functioning as expected. Authentication workflow with third party clients at your disposal (e.g. slicers) works as it should.
  • Backup creation, download and restore functioning as expected

✨ Features & improvements

Core

  • Improve JS error reporting in Firefox.
  • Fix a potential race condition that might have caused some build errors recently.

Achievements Plugin

  • Added unlocked achievements to the Anonymous Usage Tracking. Of course, this can be disabled, and if you have not opted into tracking in the first place, nothing will be tracked, as always. Achievement stats are available on data.octoprint.org.

🐛 Bug fixes

Core

  • #4980: Fix missing temperature history for anything but the first extruder. This was actually not a regression, but the bug only could be seen now after extending the timeline of the temperature graph to the full available history.
  • #4983 (regression): Fix prefix caching for custom defaults. Manifested in no longer being able to select release channels in the Software Update plugin.
  • #4987 (regression): Fix creation of the static version file during installation of sdist under Windows.

Achievements Plugin

  • #4984: Make the "Mass Production" achievement detect modifications of the file.
  • Fix the "Heavy Chonker" achievement.
  • Fix the default groups for the achievement permission.

GCODE Viewer

  • #4978: Fix reloading of the same file. First thought to be a regression, turned out to not be one but was a low hanging fruit.

🎉 Special thanks to all the contributors!

Special thanks to everyone who contributed to this release candidate and provided full, analyzable bug reports!

🔗 More information

- Python
Published by foosel almost 2 years ago

octoprint - 1.10.0rc3

⚠️ 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!

Things to take a closer look at

For this RC, these things should get a closer look while testing, if possible (things newly added in this follow-up RC marked with :new:):

  • Proper behaviour when using the included web interface as well as any third party clients at your disposal.
  • User and group management functioning as expected.
  • Plugin installation functioning as expected.
  • Application key management functioning as expected. Authentication workflow with third party clients at your disposal (e.g. slicers) works as it should.
  • Backup creation, download and restore functioning as expected

🔒 Security fixes

  • Severity Moderate (4.0): It was possible for a malicious admin to configure or to talk a victim with admin rights into configuring a webcam snapshot URL which when tested through the "Test" button included in the web interface would execute JavaScript code in the victim's browser when attempting to render the snapshot image. An attacker who successfully talked a victim with admin rights into performing a snapshot test with such a crafted URL could use this to retrieve or modify sensitive configuration settings, interrupt prints or otherwise interact with the OctoPrint instance in a malicious way.

This has now been fixed by properly sanitizing the data received from the snapshot URL.

See also the GitHub Security Advisory and CVE-2024-28237.

✨ Features & improvements

Core

  • #4957: Bump websocket-client dependency to version 1.6.1, after verifying that it should still work with Python 3.7 in this version, to enable third party plugins to use bug fixes included in that version.
  • PR#4964: Harden the filename sanitization in the download_file function against possible path traversal issue in future use cases.
  • Use aria-label and role instead of sr-only headings, resolving issues with the UI Customizer Plugin or other heavy CSS manipulation.
  • Use a reload popup instead of a blocking overlay modal on UI plugin and/or settings change. That should reduce the annoyance of the reload overlay popping up due to settings updates in the background. It should also help with the reload prompts sometimes observed during the newly introduced reauthentication workflow.

🐛 Bug fixes

Core

  • #4966 (regression): Fix handling of the reauthentication workflow for external users created & logged in from a configured header.
  • #4969 (regression): Fix the final page of the firstrun wizard interfering with the completion of arbitrary wizards from plugins, when not even shown.
  • Properly reflect that users logged in from a configured header can't log out through the logout button but rather must log out by closing the browser.

Action Command Notification Plugin

  • #4967 (regression): Fix the filter logic so that an empty filter regex won't lead to all notifications to be filtered out.

🎉 Special thanks to all the contributors!

Special thanks to everyone who contributed to this release candidate and provided full, analyzable bug reports, and especially to @jacopotediosi for their PR and the responsible disclosure of the security vulnerability fixed in this release!

🔗 More information

- Python
Published by foosel almost 2 years ago

octoprint - 1.10.0rc2

⚠️ 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!

Things to take a closer look at

For this RC, these things should get a closer look while testing, if possible (things newly added in this follow-up RC marked with :new:):

  • Proper behaviour when using the included web interface as well as any third party clients at your disposal.
  • User and group management functioning as expected.
  • Plugin installation functioning as expected.
  • Application key management functioning as expected. Authentication workflow with third party clients at your disposal (e.g. slicers) works as it should.
  • Backup creation, download and restore functioning as expected :new:

✨ Features & improvements

Backup Plugin

  • Require credential recheck for download & restore.

Testing & CI

  • #4908: Also automatically publish source tarball on GitHub releases.

🐛 Bug fixes

Core

  • #4939 (regression): Fix drag'n'drop initialization.
  • #4940 (regression): Make octoprint._version backward compatible enough again to work around use on OctoPi images and third party plugins out there.
  • #4941 (regression): Fix some syntax under Python 3.7 & 3.8.
  • #4942 (regression): Fix handling of setting an empty dict on the configuration. Also added a unit test for this.
  • #4943 (regression): Fix fetching of file details for the existence check, preventing the "file already exists" dialog from making the correct checks.
  • Removed a left-over from the Access Control settings panel.

🎉 Special thanks to all the contributors!

Special thanks to everyone who contributed to this release candidate and provided full, analyzable bug reports!

🔗 More information

- Python
Published by foosel about 2 years ago

octoprint - 1.10.0rc1

⚠️ 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!

Things to take a closer look at

For this RC, these things should get a closer look while testing, if possible:

  • Proper behaviour when using the included web interface as well as any third party clients at your disposal.
  • User and group management functioning as expected.
  • Plugin installation functioning as expected.
  • Application key management functioning as expected. Authentication workflow with third party clients at your disposal (e.g. slicers) works as it should.

🔒 Security fixes

  • Severity Moderate (4.2): It was possible for admins to perform password changes for their own account or others via the Settings dialog without having to re-enter their password. A malicious administrator or an attacker having taken over an administrator's session could have used this to effectively lock out users from their accounts.

This has now been fixed by introducing a reauthentication requirement on changing passwords in the Settings. Unless the user has authenticated with their password (and other credentials possibly in the future) in the past 5min of their login session, a reauthentication dialog to re-enter the credentials will be shown, and only after that has done properly will the request work. This reauthentication dialog has also been added to other critical operations (adding, changing and deleting users, adding, changing and deleting groups, installing plugins, revealing the deprecated global API key, generating, revoking, revealing and granting application keys, accessing the recovery page). The reauthentication timeout of 5min is configurable via config.yaml, see the documentation.

See also the GitHub Security Advisory and CVE-2024-23637.

✨ Features & improvements

Core

  • #4586: Added the capability report of the firmware as returned from M115 to octoprint.log and also the systeminfo bundle in shape of a new m115.txt file that gets generated if the bundle gets created while there's an active printer connection.
  • #4617: Added a manual refresh button to the webcam view that allows to reload the underlying webcam stream (if webcam plugin supports that by having implemented onWebcamRefresh in its viewmodel, otherwise the button will be a no-op). Only gets made visible when hovering over the webcam.
  • #4681: Added information on old and new file to the "file already exists dialog". See also PR#4721.
  • #4685: Implemented a custom versioning tool to replace the so far used customized version of versioneer that has gotten quite long in the tooth. It should behave the same, but with way less code to keep maintained.
  • #4714: Added a new dialog that gets displayed when the printer reports an unrecoverable error, containing the error message, what happened due to that error (print cancellation, disconnect), if available a link to an FAQ entry, the last lines of communication and a big reminder that printer errors are printer errors and not OctoPrint's fault. The dialog will be automatically opened on connected clients, however it can also be accessed later by clicking on the new error icon added to the printer state panel.
  • #4747: Made temperature graph time axis always show the configured cutoff interval. That should prevent any jumping of events.
  • #4760: Made OctoPrint compatible to Python 3.12.
  • #4764: Refactored the Tornado/WSGI interface based on the current Tornado code to make it async. That fixed the issue with connection reuse and as a very welcome side effect also very much increased the performance of the internal web server in general. Long running Flask endpoints now should no longer be able to fully block Tornado, and requests can get parallelized by the frontend, leading to a large reduction of time needed to fully load the UI.
  • #4838: Improved performance of the internal settings data structure, reducing the initial settings fetch right after a server start from 2s+ to 400-700ms.
  • #4843: Made the upload drop zone an optional feature that can be disabled in the settings. See also PR#4853.
  • #4866: Added axis labels to model size info. See also PR#4898.
  • #4880: Removed scripts folder from repo.
  • #4881: Display an error popup in case of startup issues due to inaccessible application directories.
  • #4892: Keep tool change controls enabled while printing.
  • #4921: Added graph markers for the Connected and Disconnected events to the temperature graph.
  • PR#4743: Migrate from netifaces to the pretty much drop-in replacement netifaces2, since the former has been abandoned.
  • PR#4752: Send initial history message when the web socket subscription is changed.
  • PR#4820: Added file and print head position to paused and cancel event & log entries.
  • PR#4833: Improved first run wizard safety hints. They are now visually more alerting and the wizard now also requires the user to acknowledge having read and understood each warning by checking a checkbox.
  • PR#4874: Added new Thermal Malfunction error to recognized as a kill inducing error on Marlin.
  • PR#4899: Removed the upper version pin for the argon2-cffi dependency.
  • PR#4918: Made target temperature lines in the temperature graph dashed. Improves accessibility for color blind users.
  • PR#4928: Further improve screen reader accessibility.
  • Use a file <basefolder>/.incomplete_startup to flag an incomplete startup instead of a config.yaml entry. Makes it easier to reconfigure the server in CI situations.
  • Improved the UX of the systeminfo CLI. octoprint systeminfo will now generate a bundle in the current directory even without an explicitly added . parameter. octoprint systeminfo --short has been added to generated an abridged version directly on the command line. This should clear up issues we saw in the past where people forgot the . and then just pasted the abridged text only version when in fact a bundle was needed and requested.
  • Added progress to PrintFailed, PrintCancelled and PrintPaused events.
  • Added operation to FileRemoved event. Allows distinguishing between a removal due to an actual remove or a move.
  • Added a funding banner to the About dialog and a funding link to the footer.

Achievement Plugin (✨ New!)

Added a new bundled Achievements plugin! OctoPrint will now internally record some instance stats and monitor some events and based on that give out various achievements. This version contains 36 achievements, 22 of which are hidden and for you to be discovered. Additionally, the instance stats are also being recorded per year to make it possible in the future to give you some yearly stats overview of your OctoPrint and printing use.

Action Command Notification Plugin

  • #4326: Added ability to ignore incoming printer notifications based on a filter regex. This is to combat notification spam by firmwares which abuse the feature. Please talk to your firmware provider about not abusing the notification action command for things triggered by the user, e.g. mirroring M117 commands! See also PR#4886.

Application Keys Plugin

  • #4894: Added application key details incl. QR Code to user settings. See also PR#4895.

Classic Webcam Plugin

  • #4837: Apply the selected camera aspect ratio to its video tag.

Discovery Plugin

  • Updated the zeroconf dependency.

Event Manager Plugin

  • #4869: Added UI support for events with multiple triggers. See also PR#4851.

Plugin Manager Plugin

  • Removed an unused variable.

Software Update Plugin

  • #4819: OctoPrint will now be clearly marked as not updateable when running on Windows.

Virtual Printer Plugin

  • PR#4799: Added support for generating an area report as part of the response to M115.
  • Made the simulated errors configurable via the settings.

Documentation

  • #4787: Added a note to the documentation of the SettingsPlugin mixin that updating settings will trigger a reload screen.
  • #4852: Updated the plugin tutorial to reflect current CLI outputs.
  • PR#4823: Slight improvement on the pause GCODE script.

Testing & CI

  • #4908: Automatically publish release build artifacts on GitHub Releases as well as PyPI.
  • Updated the node-qunit-puppeteer version to combat some JS unit test flakyness.
  • Run the E2E tests against the lowest and highest supported Python version, to make sure things work on both edge cases.
  • Updated playwright used for the E2E tests.

🐛 Bug fixes

Core

  • #4719: Normalize paths in file manager methods and called hooks and events.
  • #4753: Fixed an error when attempting to set a custom logging level under certain circumstances.
  • #4756: Fixed including variables in GCODE scripts from more than one plugin. See also PR#4757.
  • #4769: Fixed a translation error in the included german language files. See also PR#4897.
  • #4800: Fixed folder sorting by date of last print.
  • #4808: Fixed wrong initial field set in printer state (printTimeOrigin instead of the correct printTimeLeftOrigin).
  • #4812: Fixed octoprint systeminfo .
  • PR#4830: Fixed translateability of the filament usage information in the state panel.
  • #4835: Fixed octoprint get not properly returning sub trees for plugin settings hierarchies, due to a missing initialization.
  • #4841: Fixed a broken knockout binding in the GCODE Viewer's size warning dialog, leading to the file name missing. See also PR#4842.
  • #4843: Don't trigger the drop zone for uploading files when not dragging files. Fixes issues when accidentally dragging selected text and similar.
  • #4867: Fixed a warning about using the old webcam settings access path.
  • #4903: Hardened temperature offset code against empty temperature commands and added logging for such cases.
  • #4922: Fixed sorting of folder list in "move or rename file" dialog.
  • #4929: Fixed a regression in the webcam styles that caused issues with the (abandoned) third party plugin TouchUI. See also PR#4930.
  • PR#4794: Protect against issues when a double slash is contained in the timelapse base folder, leading to not being able to delete timelapses.
  • Keep updating the temperature graph with empty entries even while disconnected, to ensure events shown there properly reflect their point in time from "now".
  • Enabled CORS on asset plugins.
  • Fixed some warnings in the vendored awesome-slugify dependency.

Classic Webcam Plugin

  • #4885: Fixed snapshot timeout & SSL validation settings.

Discovery Plugin

  • #4814: Join multicast group for SSDP discovery on all available addresses. Fixes issues with discovery on VLAN enabled hosts.

Plugin Manager Plugin

  • Properly handle unset plugin versions in plugin notifications from the repository, e.g. when attempting to load notifications for a bundled plugin (which normally shouldn't happen, but turned out to happen during development thanks to an identifier clash).

Software Update Plugin

  • Fixed httpheader check type. It was not storing its current value properly.

Virtual Printer Plugin

  • #4907: Fixed a race condition related to G4 and wait.

Documentation

  • #4906: Adjusted documentation to reflect correct name for logsViewModel dependency.
  • PR#4815: Updated documentation of PrinterInterface.set_temperature to reflect the current implementation.
  • PR#4868: Removed some repeating words.
  • Clarify how to reconfigure log formatters. OctoPrint now either uses simple or colored formatters for the console log output, this still needed to get properly documented.

🎉 Special thanks to all the contributors!

Special thanks to everyone who contributed to this RC, especially to @0r31, @bigfoxtail, @CMR-DEV, @cociweb, @cperrin88, @credomane, @crysxd, @danielkucera, @dawidpieper, @eumiro, @evanwurden, @hynek, @jatin-47, @jneilliii , @kaenguruhs, @mad73923, @max246, @MichaIng, @mintsoft, @neod123 and @thinkyhead for their PRs!

And an extra shoutout to our 13 first time contributors: @bigfoxtail, @CMD-DEV, @cociweb, @cperrin88, @credomane, @danielkucera, @evanwurden, @hynek, @jatin-47, @kaenguruhs, @mad73923, @mintsoft and @neod123! 🎉

Also a big thank you to Timothy "TK" Ruppert for responsibly disclosing the security vulnerability that was fixed in this release.

🔗 More information

- Python
Published by foosel about 2 years ago

octoprint - 1.9.3

✋ Heads-ups

The heads-ups from 1.9.0 still apply, please read this release's release notes as well for a full picture of what you should be aware of and what changed!

⛈ Issues while updating?

On every new OctoPrint release we see some people run into the same issues with outdated or broken environments all over again. If you encounter a problem during update, please check this collection of the most common issues encountered over the past couple of release cycles first, and test if the included fixes solve your problem.

♻ Changes

🔒 Security fixes

  • Severity Medium (6.4): It was possible for a malicious admin to configure a specially crafted GCODE script through the Settings that would allow code execution during rendering of that script. An attacker could have used this to extract data managed by OctoPrint, or manipulate data managed by OctoPrint, as well as execute arbitrary commands with the rights of the OctoPrint process on the server system.

Please note that GCODE files uploaded to be printed were not affected! This vulnerability exclusively affected GCODE Scripts to be executed on connection to the printer, print pause, resume etc, as described in the documentation, to be found under Settings > GCODE Scripts and configurable only by users with the ADMIN permission.

See also the GitHub Security Advisory and CVE-2023-41047.

🐛 Bug fixes

  • #4849 & PR#4860: Fix for not being able to extrude/retract from the control panel in the UI after editing the extrusion speed in the printer profile.
  • #4893: Pin pydantic dependency to 1.10.12. This works around an issue existing in some environments with pydantic version 1.10.13, which was released on September 26 2023. Said issue causes OctoPrint to no longer be able to start. See also pydantic/pydantic#7689.

🎉 Special thanks to all the contributors!

Special thanks to everyone who contributed to this bugfix release, especially to @srLinux for their PR!

Also a big thank you to tianxin Wu (Bearcat), Vulnerability Researcher at Numen Cyber Labs, Singapore, for responsibly disclosing the security vulnerability that was fixed in this release.

🔗 More information

  • Commits
  • As this is a bugfix release, there were no release candidates

- Python
Published by foosel over 2 years ago

octoprint - 1.9.2

✋ Heads-ups

The heads-ups from 1.9.0 still apply, please read this release's release notes as well for a full picture of what you should be aware of and what changed!

⛈ Issues while updating?

On every new OctoPrint release we see some people run into the same issues with outdated or broken environments all over again. If you encounter a problem during update, please check this collection of the most common issues encountered over the past couple of release cycles first, and test if the included fixes solve your problem.

♻ Changes

🐛 Bug fixes

  • #4779 & PR#4780: Work around argon2 password hashing algorithm not working reliably on Rock64/aarch64 - no error is produced, but the hash verification just fails. Fall back to pbkdf2_sha256 if this happens. Backported from 1.10.0.dev.
  • #4806: Fix the httpheader software update check type. Backported from 1.10.0.dev.
  • #4854: Upgrade PyYaml dependency to 6.0.1+. This works around an issue existing in PyYaml versions 5.4.0 to 6.0.0 with its dependency Cython in version 3.0, which was released on July 17th 2023. Said issue renders OctoPrint uninstallable due to PyYaml's install failing.

🎉 Special thanks to all the contributors!

Special thanks to everyone who contributed to this bugfix release, especially to @cperrin88 for their PR!

🔗 More information

  • Commits
  • As this is a bugfix release, there were no release candidates

- Python
Published by foosel over 2 years ago

octoprint - 1.9.1

✋ Heads-ups

The heads-ups from 1.9.0 still apply, please read this release's release notes as well for a full picture of what you should be aware of and what changed!

⛈ Issues while updating?

On every new OctoPrint release we see some people run into the same issues with outdated or broken environments all over again. If you encounter a problem during update, please check this collection of the most common issues encountered over the past couple of release cycles first, and test if the included fixes solve your problem.

♻ Changes

✨ Improvements

  • #4821: Defer sending of M20 until after the capability report has been received by default, instead of defaulting to sending it right away. Most firmwares out there now should be sending capability reports, and for those that don't, the setting can still be manually set to false.

🐛 Bug fixes

  • #4818: Fix broken/erroring plugin sorting if a list of SortablePlugins and non sortable plugins gets processed in the same sorting context.
  • #4829: Fix URL used by the GCode Viewer's worker to fetch info about the file to be rendered. It was not supporting custom prefixes on the URL yet (e.g. http://example.com/octoprint), now it does.
  • #4834: Fix a bug in the GCode Viewer that resulted in a print not being rendered when loaded while the tab of the viewer was not focused.
  • #4824: Fix potential webcam unload/load switching when scrolling on the control tab. Could not always be triggered, but apparently was seen under some circumstances.
  • Fix the reload button of the GCode Viewer
  • Fix a bug in the GCode Viewer causing layers that were empty in one file causing that layer to not be rendered in all consecutively loaded files, until a page reload.

🎉 Special thanks to all the contributors!

Special thanks to everyone who contributed to this bugfix release, especially to @cp2004 and @JoveToo for their PRs!

🔗 More information

  • Commits
  • As this is a bugfix release, there were no release candidates

- Python
Published by foosel over 2 years ago

octoprint - 1.9.0

✋ Heads-ups

💥 OctoPrint's web interface now requires ES9 (EcmaScript 2018) support in your browser

Up until now OctoPrint still supported running its UI on browsers that only supported EcmaScript 5 as released in 2009. However, given that based on data about used browsers from the Anonymous Usage Tracking 98.96% of all browsers used to access OctoPrint support ES9 and being able to use these features allows things like asynchronous GCODE loading in the viewer (see #4559) and in general very much improves development experience and speed, the decision has been made to greenlight the use of these features in OctoPrint's JS code base.

Given that pretty much all common browsers have had the required support for several years now, this change should not affect ~99% of all of you. For those 0.15% of you accessing the OctoPrint web interface with ancient browsers that don't yet have support this means it is time to upgrade. For those 0.89% of you accessing the OctoPrint web interface with browsers for which we do not know about support, it might also be time to upgrade.

In any case, you can check whether your chosen browser supports all the features that OctoPrint uses in core & bundled plugins by going to the new check page at octoprint.org/browser-check/.

🧩 Heads-up for plugin and third party application developers: Webcam integration has moved to a plugin interface

OctoPrint 1.9.0 has been refactored to extract the webcam integration into a new plugin type WebcamProvider as well as a _webcam template type. You may find the documentation of these here:

A new bundled plugin Classic Webcam has been created that implements the existing webcam integration (mjpg/hls/beta webrtc support as well as snapshotting).

A consequence of this refactoring is that there's no longer a general webcam configuration in the settings but rather now there are WebcamProviderPlugin specific settings per plugin. A backwards compatible compatibility layer has been added so that plugin's accessing any of the formerly available global webcam settings should still be able to access and change the data, however it should be considered deprecated and warnings will be logged. Please check your plugins and adjust as necessary when running on OctoPrint 1.9.0.

🧩 Heads-up for plugin developers: octoprint_setuptools has been extracted

In order to support plugin's that want to use pyproject.toml, in which case current pip versions will build their package in isolated mode, leading to the required octoprint_setuptools dependency not being available and thus the install failing, octoprint_setuptools was extracted into its own pypi package to allow pyproject.toml based plugins to depend on it by adding this to pyproject.toml:

toml [build-system] requires = ["setuptools>=40.8.0", "wheel", "octoprint-setuptools"] build-backend = "setuptools.build_meta"

This should not affect plugins that don't use pyproject.toml, however plugin developers are strongly advised to test installing their plugin under 1.9.0 if not already done during the release candidate phase.

♻ Changes

🔒 Security fixes

  • When accessed through https, OctoPrint will now set all cookies with the secure flag.

✨ Features & improvements

  • #1868 & #4300: Support multiple file uploads via the Web UI.
  • #2191: Added support for M118 on virtual printer.
  • #3893: Extended GCODE analyser to also calculate non-extruding bounding box and evaluate those in the UI, warning about moves outside of the configured build volume.
  • #4040: Record last_fan_speed for use in GCODE scripts, just like last_position and last_temperature.
  • #4195: Added four new hooks: octoprint.plugin.backup.before_backup, octoprint.plugin.backup.after_backup, octoprint.plugin.backup.before_restore, octoprint.plugin.backup.after_restore. Those will allow plugins to perform additional tasks right before/after backup and right before/after restore, e.g. copying additional files from the file system into the plugin's data folder, and moving it around after.
  • #4373: Support installing plugins from a JSON list of URLs or the plugin manager's export.
  • #4428: Added a plugin management task queue to queue up plugin installs while printing.
  • #4435: Improved memory footprint of GCODE viewer by compressing the individual layer data.
  • #4483: Don't block unused keys apart from Tab when keyboard control is active.
  • #4484: Upgraded to FontAwesome 6.
  • #4450: Improved performance of parser in GCODE viewer's "skipUntilThis" functionality.
  • #4473: If no printer connection is active, OctoPrint will now poll and refresh the serial port list in the background.
  • #4494: Send long filenames to Marlin when the LFN_WRITE capability is set.
  • #4510: Updated black.
  • #4511: Migrated black config to pyproject.toml.
  • #4512: Use lazy logging in octoprint. module.
  • #4518: Added custom name field to events in the event manager. Should improve readability if a lot of event hooks are configured.
  • #4524: The short hand systeminfo overview has now been hidden behind a devmode query parameter in the URL. It sadly happened too often that people only shared the abridged overview instead of a full bundle. This should hopefully help.
  • #4534: Added JavaScript QUnit based tests to build workflow.
  • #4536: Added more unit tests for helpers.js.
  • #4541: Added button to clear the GitHub Access Token from the Software Update plugin again.
  • #4559: Improved memory footprint of GCODE viewer by loading the displayed GCODE file asynchronously and never loading it fully into memory at once.
  • #4562: Dropped restriction to ES5 on the core UI and switched to ES9 compatibility to allow for the use of modern JS language features. This might mean that OctoPrint's UI will refuse to load in really old browsers, but at some point we need to move forward. You can check compatibility of your used browsers on a new browser check page on octoprint.org.
  • #4584: Automatically detect available files for octoprint dev css:build.
  • #4588: Improved error reporting when uploading and removing files and folders.
  • #4591: Fire action command hooks on all action commands, not just unhandled ones, to give plugins a chance to react even to handled action commands as well.
  • #4594: Added a warning that using the "skip until" feature of the GCODE viewer to skip past too much GCODE (especially initialization code like G90/G91 or M82/M83) can break the visualization.
  • #4597: Added aria labels and roles for accessibility.
  • #4605: Recognize Repetier Firmware style SD Card initialization messages. Consequentially remove "always present" setting since it is no longer needed.
  • #4610: Support timestamps in SD card file listings. Send M20 L T if EXTENDED_M20 support is reported by the firmware. Also extend file list parser to be able to parse timestamps.
  • #4611: Added a tooltip to the plugin manager install buttons to clarify it is disabled when it is disabled (during printing).
  • #4613: Render all whitespace in file names in the file list in the UI.
  • #4614: Added a hint about octoprint dev css:build to the docs.
  • #4618: Clarified that plugins installed while restoring from OctoPrint backups won't necessarily be the same version as prior.
  • #4625 & #4722: Improved stack traces of StorageErrors by providing __str__ method. Get rid of left-over StorageError.message references.
  • #4628: Moved webcam support to a new webcam focused plugin type. WebcamProviderPlugin mixins provide information about and configuration of available cameras, as well as access to snapshots. A new template type webcam allows plugins to embed webcam streams into OctoPrint's control view through custom HTML. This should allow to quickly add support for new types of webcam servers and streaming protocols. See also #4717.
  • #4635: Support additional No media SD card initialization failure message from Marlin 2.1.x.
  • #4638: Slight refactoring of the timelapse related permissions. TIMELAPSE_{LIST|DOWNLOAD|DELETE} will now only apply to finished timelapses, TIMELAPSE_ADMIN will be only related to configuration access, and a new TIMELAPSE_MANAGE_UNRENDERED permission allows listing, deleting and rendering of unrendered timelapses.
  • #4657: Added a new event ChartMarked that allows to inject custom chart markers into the temperature graph. For an example of how this can be used, the BedCooldown plugin utilizes this starting with version 0.6.0 and uses it to inject an additional "Cooldown" marker into the graph. See also #4738.
  • #4658: Added a new field operation to the FILE_ADDED event to allow event hooks to distinguish whether the event was caused by adding (add), copying (copy) or moving (move) a file.
  • #4682: Added a dependency on wheel to ensure it is installed, since a lack of it might cause issues with certain plugin setups and new pip versions.
  • #4694: UX improvements in the file/folder move dialog.
  • #4695: Support R parameter in temperature commands when applying temperature offsets.
  • #4702: Use block scalars in YAML dumps. Improves readability of config files and such.
  • #4704: Performance improvements on the file list API endpoint.
  • #4708: Added a new removeMessage to the socket client to allow to unsubscribe a handler for messages again.
  • Migrated default settings to pydantic.
  • Added support for Traefik's X-Forwarded-Prefix header.
  • Added codespell to pre-commit to add automatic spell checking.
  • Added a new utility function octoprint.util.files.search_in_file that will search whether a regular expression match is contained in a file, using grep if available and falling back to a pure python implementation if not.
  • Made the Announcements plugin less spammy. Announcements will now no longer trigger a popup (unless from a priority 1 channel like Important) but instead cause an unread counter to be rendered on the notification icon (1-9 and infinity symbol for more). The announcement reader has been extended by a default "Unread" tab that shows all unread news items, and a Mark All Read button has been added to quickly get rid of the unread counter altogether.
  • Added the option for plugins to provide a privacy policy URL via __plugin_privacypolicy__ and modified the Plugin Manager to add a link to that on plugins making use of it. Repository plugins can also report this via a new privacypolicy property which will show the link even in the repository browser without having to install the plugin first.
  • The virtual printer now supports LFN_WRITE.
  • Improved file entries from printer's SD in the UI's file list. The Metadata dropdown button has been replaced with an SD card icon to make clear this file is from the SD card. Also improved the rendering of unknown upload dates.
  • Added various new unit tests.
  • Added flag to CommandlineCaller to not have it log its output.
  • Added two new log files: tornado.log is an access log for the embedded tornado web server and logs all requests (as logged on the tornado.access target). auth.log logs successful and failed logins via credentials, remember me cookie, headers or autologin, as well as logouts. This should allow auditing OctoPrint access, and also make it possible to use something like fail2ban if so desired.
  • Migrated E2E tests to Playwright.
  • Added a log check to the E2E tests. When any exceptions or other ERROR lines are logged in octoprint.log while running the E2E tests, this will now cause a test failure.
  • Added a method Settings.checkBaseFolder(self, type) to check whether a base folder already exists, without creating it.
  • Got rid of a false positive error about a missing default printer profile on the very first server start.
  • Upgraded various dependencies and adjusted codebase as needed for breaking changes. See also #4629

Improvements done during the release candidate phase

  • #4759: Make it easier for plugins to move the webcam surface of the new webcam integration around.
  • #4778: Clarify the role of the "default webcam", now called "fallback webcam", since it is only responsible of providing the compatibility layer of the webcam settings for legacy clients.
  • #4778: Minor phrasing tweak.
  • Migrate a unit test from unittest to pytest in the hopes that this fixes some flakiness issues observed in CI.

🐛 Bug fixes

  • #4347: Only allow one concurrent backup in parallel.
  • #4445: Fixed support of second level locales.
  • #4470: Fixed wrong mm/s in documentation.
  • #4471: Fixed non-extrusion G2/G3 moves in the GCODE viewer.
  • #4490: Removed use of HTML entity for degree in temperature tooltips, use unicode degree symbol instead.
  • #4493: Defer sending of M20 until first capability report has been received and thus it can be determined whether the printer supports the L parameter or not.
  • #4505: Fixed timelapse getting stuck unrendered if filename includes %.
  • #4525: Fixed double message when trying to skip a mandatory wizard during first run setup.
  • #4539: Fixed blacklist fetch timeout, missing one could cause a server hang in case of broken network connectivity.
  • #4551: Made Settings object thread safe.
  • #4552: Extracted octoprint_setuptools into its own pypi package to allow pyproject.toml based plugins to depend on it by adding this to pyproject.toml: toml [build-system] requires = ["setuptools>=40.8.0", "wheel", "octoprint-setuptools"] build-backend = "setuptools.build_meta"
  • #4554: Fixed ZeroDivisionError due to firmware retraction in GCODE analyser.
  • #4558: Fixed flakey Cypress E2E tests by switching to Playwright.
  • #4574: Fixed improper use of sys.version to check for Python 3+.
  • #4575: Fixed some Python type hints.
  • #4578: Limit configurable build volume to something sensible to avoid crashes in the GCODE viewer when attempting to render billions of grid lines.
  • #4581: Use G2/G3 arc length for estimating print time.
  • #4582: Fixed rendering of G02/G03 (leading 0) in the GCODE viewer.
  • #4607: Fixed lower casing of SD Card file names in virtual printer.
  • #4616: Fixed spinner icon on file delete.
  • #4621: Trim leading/trailing whitespace from user names.
  • #4623: Fix onEventFileDeselected not firing on printer disconnect.
  • #4626: Fix translation of permission descriptions in UI, also added new knockout binding gettext to assist in dynamic translation based on observable values.
  • #4634: Decreased timeouts of various external fetches to reduce likeliness of blocking the main webserver thread.
  • #4636: Fixed a bug in handling the SLICING_STARTED event in the UI.
  • #4640: HLS camera flipping seems to have fixed itself by migrating the webcam integration into its own plugin.
  • #4651: Fixed logout after first run wizard, it was not reloading the login UI. As a consequence of this, deprecated CONFIG_ACCESS_CONTROL_ACTIVE.
  • #4655: Fixed various broken links to flask and jinja2 documentation in the docs.
  • #4665: Explicitly use setup.cfg for flake8 configuration, to avoid issues if the user has a local config in ~/.config/flake8 already.
  • #4670: Fixed permissions of anonymous API access. Also fix error message for wrong permissions on plugins.
  • #4680: Fixed file list scroll position on upload.
  • #4688: Fixed handling of POST requests with chunked transfer encoding.
  • #4690: Include newlines when copy-pasting from software update log or plugin manager log.
  • #4703: Fixed error detection during plugin installs, should now also correctly detect missing/broken dependencies.
  • #4712: Fixed authkey flow redirect when not logged in.
  • #4735: Fixed settings "Send line numbers & checksums for non-GCODE commands" and "Wait for acknowledging ok for non-GCODE commands" not saving from the UI.
  • Fixed an issue with the settings markup of the GCODE viewer plugin.
  • Fixed an issue with saving multiple credentials for the Software Update Plugin, where newly added credentials would overwrite any existing ones.
  • Removed support for tarball language packs, which were never really supported to begin with and made the code more vulnerable to attacks due to issues in the tarfile core library.
  • Fixed a bug in the Action Command Prompt plugin causing a JS error when some data was not set.
  • Fixed the default URL used for redirects, which potentially got any prefix paths attached twice.
  • Fixed various typos and spelling errors. See also #4468, #4492, #4533, #4550, #4599, #4679

Fixes done during the release candidate phase

  • #4749 (regression): Bring back a bundled octoprint_setuptools package, since installing the one provided by OctoPrint-Setuptools apparently won't work on updates from OctoPrint versions where OctoPrint provides that package, breaking plugin installs in the process.
  • #4754 (regression): Fix saving of the number of extruders in the printer profile
  • #4755 (regression): Fix the Application Keys workflow failing due to an unset CSRF cookie
  • #4761 (regression): Fix an error with the new chart markings that could render the temperature graph non functional
  • #4762 (regression): Fix the system wide language defaults getting ignored
  • #4763 (regression): Fix an internal server error when the Application Keys plugin is disabled
  • #4772 (regression): Fixed sync of GCODE Viewer with progress when behind haproxy
  • #4776: Fix a typo in the new webcam visibility API
  • #4782: Fix a typo in the Classic Webcam snapshot hook, leading to the SSL validation setting not being fetched correctly
  • #4783: Fix saving the changes to the default snapshot webcam.
  • #4789: Fix synchronization of the timelapse configuration on snapshot webcam change.
  • #4791 (regression): Fix webcam initialisation on control tab if only one webcam plugin is available.
  • #4795 (regression): Fix breaking UI of the events manager when loading event subscriptions that don't yet have a name (PR#4796)
  • Fix the new python setup.py scan_deps dev tool breaking when encountering a non PEP440-compliant version number (regression)
  • GCODE Viewer: Fixed a double load of the model under certain circumstances. (regression)

🎉 Special thanks to all the contributors!

Special thanks to everyone who contributed to this RC, especially to @040medien, @arekm, @arrdem, @cclauss, @CoReYeDe, @cp2004, @crysxd, @dawidpieper, @FedericoNembrini, @frenck, @j7126, @jneilliii, @Josef-MrBeam, @JoveToo, @kForth, @luzpaz, @max246, @msrasheed, @rfinnie, @richardsondev, @sgsunder, @smartin015, @the-ress, @tommywienert and @vector76 for their PRs!

And an extra shoutout to our 16 first time contributors: @040medien, @arekm, @arrdem, @CoReYeDe, @dawidpieper, @Josef-MrBeam, @kForth, @luzpaz, @max246, @msrasheed, @nmattis, @Patrick-Ames, @sgsunder, @smartin015, @the-ress and @tommywienert! 🎉

🔗 More information

- Python
Published by foosel almost 3 years ago

octoprint - 1.9.0rc6

⚠️ 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!

✋ Heads-up

All of the heads-ups of 1.9.0rc1 apply (Gist since the release had to be pulled).

♻ Changes

🐛 Bug fixes

  • #4795 (regression): Fix breaking UI of the events manager when loading event subscriptions that don't yet have a name (PR#4796)

🎉 Special thanks to all the contributors!

Special thanks to everyone who contributed to this release candidate and provided full, analyzable bug reports, and to @jneilliii for their PR!

🔗 More information

- Python
Published by foosel almost 3 years ago

octoprint - 1.9.0rc5

⚠️ 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!

✋ Heads-up

All of the heads-ups of 1.9.0rc1 apply (Gist since the release had to be pulled).

♻ Changes

✨ Improvements

  • #4778: Minor phrasing tweak.

🐛 Bug fixes

  • #4791 (regression): Fix webcam initialisation on control tab if only one webcam plugin is available.
  • Migrate a unit test from unittest to pytest in the hopes that this fixes some flakiness issues observed in CI.

🎉 Special thanks to all the contributors!

Special thanks to everyone who contributed to this release candidate and provided full, analyzable bug reports, and to @cp2004 and @JoveToo for their PRs!

🔗 More information

- Python
Published by foosel almost 3 years ago

octoprint - 1.9.0rc4

⚠️ 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!

✋ Heads-up

All of the heads-ups of 1.9.0rc1 apply (Gist since the release had to be pulled).

♻ Changes

✨ Improvements

  • #4778: Clarify the role of the "default webcam", now called "fallback webcam", since it is only responsible of providing the compatibility layer of the webcam settings for legacy clients.

🐛 Bug fixes

  • #4772 (regression): Fixed sync of GCODE Viewer with progress when behind haproxy
  • #4776: Fix a typo in the new webcam visibility API
  • #4782: Fix a typo in the Classic Webcam snapshot hook, leading to the SSL validation setting not being fetched correctly
  • #4783: Fix saving the changes to the default snapshot webcam.
  • #4789: Fix synchronization of the timelapse configuration on snapshot webcam change.
  • GCODE Viewer: Fixed a double load of the model under certain circumstances. (regression)

🎉 Special thanks to all the contributors!

Special thanks to everyone who contributed to this release candidate and provided full, analyzable bug reports, and to @cp2004 and @JoveToo for their PRs!

🔗 More information

- Python
Published by foosel almost 3 years ago

octoprint - 1.9.0rc3

⚠️ 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!

✋ Heads-up

All of the heads-ups of 1.9.0rc1 apply (Gist since the release had to be pulled).

♻ Changes

✨ Improvements

  • #4759: Make it easier for plugins to move the webcam surface of the new webcam integration around.

🐛 Bug fixes

  • #4754 (regression): Fix saving of the number of extruders in the printer profile
  • #4755 (regression): Fix the Application Keys workflow failing due to an unset CSRF cookie
  • #4761 (regression): Fix an error with the new chart markings that could render the temperature graph non functional
  • #4762 (regression): Fix the system wide language defaults getting ignored
  • #4763 (regression): Fix an internal server error when the Application Keys plugin is disabled
  • Fix the new python setup.py scan_deps dev tool breaking when encountering a non PEP440-compliant version number

🎉 Special thanks to all the contributors!

Special thanks to everyone who contributed to this release candidate and provided full, analyzable bug reports, and to @crysxd for his PR!

🔗 More information

- Python
Published by foosel almost 3 years ago

octoprint - 1.9.0rc2

⚠️ 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!

✋ Heads-up

All of the heads-ups of 1.9.0rc1 apply (Gist since the release had to be pulled).

🐛 Bug fixes

  • #4749: Bring back a bundled octoprint_setuptools package, since installing the one provided by OctoPrint-Setuptools apparently won't work on updates from OctoPrint versions where OctoPrint provides that package, breaking plugin installs in the process.

🔗 More information

- Python
Published by foosel almost 3 years ago

octoprint - 1.8.7

✋ Heads-ups

The heads-ups from 1.8.0 still apply, please read this release's release notes as well for a full picture of what you should be aware of and what changed!

The heads-up from 1.8.3 also still apply, please read this release's release notes as well.

⛈ Issues while updating?

On every new OctoPrint release we see some people run into the same issues with outdated or broken environments all over again. If you encounter a problem during update, please check this collection of the most common issues encountered over the past couple of release cycles first, and test if the included fixes solve your problem.

♻ Changes

✨ Improvements

  • #4488 - Add support for Python 3.11 by bumping up the version of a dependency.

🐛 Bug fixes

  • #4744 - Do not send None to Locale.parse if no match can be made between the request's accepted languages and the installed languages. Fixes a 500 server error on the API in case of Babel being at of version of 2.12 or higher.

🎉 Special thanks to all the contributors!

Special thanks to everyone who contributed to this bugfix release, especially to @cp2004 for their PR!

🔗 More information

  • Commits
  • As this is a bugfix release, there were no release candidates

- Python
Published by foosel almost 3 years ago

octoprint - 1.8.6

✋ Heads-ups

The heads-ups from 1.8.0 still apply, please read this release's release notes as well for a full picture of what you should be aware of and what changed!

The heads-up from 1.8.3 also still apply, please read this release's release notes as well.

⛈ Issues while updating?

On every new OctoPrint release we see some people run into the same issues with outdated or broken environments all over again. If you encounter a problem during update, please check this collection of the most common issues encountered over the past couple of release cycles first, and test if the included fixes solve your problem.

♻ Changes

🐛 Bug fixes

  • #4659 - Fix the sanity check on the backup download endpoint to check against full paths.

🎉 Special thanks to all the contributors!

Special thanks to everyone who contributed to this bugfix release!

🔗 More information

  • Commits
  • As this is a bugfix release, there were no release candidates

- Python
Published by foosel over 3 years ago

octoprint - 1.8.5

✋ Heads-ups

The heads-ups from 1.8.0 still apply, please read this release's release notes as well for a full picture of what you should be aware of and what changed!

The heads-up from 1.8.3 also still apply, please read this release's release notes as well.

⛈ Issues while updating?

On every new OctoPrint release we see some people run into the same issues with outdated or broken environments all over again. If you encounter a problem during update, please check this collection of the most common issues encountered over the past couple of release cycles first, and test if the included fixes solve your problem.

♻ Changes

✨ Improvements

  • Explicitly declare in-memory storage for rate limiter. Gets rid of warnings under latest flask-limiter versions.

🐛 Bug fixes

  • #4656 - Fix cookie suffix creation on the frontend to properly work with multi-level subpaths. The wrong suffix caused OctoPrint's core UI not to be able to extract the CSRF token when running behind a reverse proxy with a multi-level prefix path, rendering the UI non functional.
  • #4659 - Fix the sanity check on the backup download API so that backups created through the CLI or third party plugins named arbitrarily will be downloadable by admins.

🎉 Special thanks to all the contributors!

Special thanks to everyone who contributed to this bugfix release!

🔗 More information

  • Commits
  • As this is a bugfix release, there were no release candidates

- Python
Published by foosel over 3 years ago

octoprint - 1.8.4

✋ Heads-ups

The heads-ups from 1.8.0 still apply, please read this release's release notes as well for a full picture of what you should be aware of and what changed!

The heads-up from 1.8.3 also still apply, please read this release's release notes as well.

⛈ Issues while updating?

On every new OctoPrint release we see some people run into the same issues with outdated or broken environments all over again. If you encounter a problem during update, please check this collection of the most common issues encountered over the past couple of release cycles first, and test if the included fixes solve your problem.

♻ Changes

✨ Improvements

  • Added a new reverse proxy test page under /reverse_proxy_test. This can be used to determine whether you have configured any reverse proxies that are between you and OctoPrint correctly, and if not where the error might lie. This should help in debugging issues caused by misconfigured reverse proxies and the CSRF protection introduced in 1.8.3.
  • Switched the SameSite setting on cookies to Lax. Strict was causing issues for users who navigate to their OctoPrint instance using a custom start page, since SameSite=Strict would suppress all cookies in that case, forcing you to login again. Please note that you can switch it to Strict yourself via the server.cookies.samesite configuration option, if you so desire for slightly increased security, and don't need the ability to access your OctoPrint instance from a link on another page while still staying logged in.

🐛 Bug fixes

  • #4648 - Fix passive login with global API key. The _api user could not be looked up for cookie signatures, this has been rectified.
  • #4648 - Invalid API keys now correctly report that they are invalid instead of being treated like a guest user.
  • #4648 - Guest users on the API (no browser context, no API key) are now properly handled and no longer assumed to be a browser session, thus triggering CSRF protection.
  • #4650 - Fix setting CSRF cookie on cached responses. This bug could prevent the UI from working if it was served from the browser's cache in combination with a 304 Not Modified response from the server, instead of being freshly generated.
  • #4653 - Fix handling of reauth requests on the websocket with reason stale, also send a stale reauth request in case of attempting to auth with an unknown user/session combo.
  • Fixed fallback to pbkdf2sha256 if argon2 backend is missing for password hashing. The `argon2cffi` dependency is still required and should be automatically installed on installation of OctoPrint 1.8.3+, but if for whatever reason that (partially) fails, OctoPrint will now gracefully fallback to a different password hashing algorithm while logging a warning about that, instead of just spewing errors.

🎉 Special thanks to all the contributors!

Special thanks to everyone who contributed to this bugfix release!

🔗 More information

  • Commits
  • As this is a bugfix release, there were no release candidates

- Python
Published by foosel over 3 years ago

octoprint - 1.8.3

✋ Heads-ups

The heads-ups from 1.8.0 still apply, please read this release's release notes as well for a full picture of what you should be aware of and what changed!

Important notice about downgrading from this version

With OctoPrint 1.8.3, the password hashing has been changed to use the Argon2 hashing algorithm. Any existing accounts will be migrated to the new hashing format on their first login under 1.8.3 or later, and the accessControl.salt value will be stripped from the config once all accounts have been migrated as it is no longer needed. This however means that downgrading to an earlier version will result in no longer being able to login, since earlier versions of OctoPrint 1.8.3 have no idea what to do about the Argon2 hashes and require accessControl.salt as well.

However, OctoPrint 1.8.3 and later come prepared for this scenario and will create a backup of both your users.yaml and config.yaml files, to make sure you can manually roll those back should for whatever reason you need to downgrade to a version prior 1.8.3. Find out more in the FAQ.

Plugin authors: Check out the changes due to OctoPrint's new CSRF protection

To protect OctoPrint against CSRF attacks against the non CORS affected upload endpoints, in case of browser session based authorization the API is protected using the Double Submit Cookie mitigation strategy. You can read more about how this is implemented and how it might affect your frontend code in the docs.

If your plugin happens to implemented the BlueprintPlugin mixin, please also read up on the changes on that that relate to CSRF protection and what steps you must take to get rid of warnings you will now see in the logs otherwise. You can find the updated docs on the BlueprintPlugin mixin here.

⛈ Issues while updating?

On every new OctoPrint release we see some people run into the same issues with outdated or broken environments all over again. If you encounter a problem during update, please check this collection of the most common issues encountered over the past couple of release cycles first, and test if the included fixes solve your problem.

♻ Changes

🔒 Security fixes

  • Severity High (8.3): It was possible to use Cross-Site Request Forgery combined with phishing to trick an admin user into visiting a malicious site that then could install a malicious plugin on the OctoPrint server using the logged-in admin user's browser credentials. This attack vector has now been closed. The API will now require to be sent a CSRF cookie provided by the server on initial page load as well as a CSRF header containing the same value with every API request that is not GET, HEAD or OPTIONS. Please read more about this in the docs.
  • Severity Medium (6.1): The "Settings Manage" permission allowed user management. This has historic reasons as it was used as the original "Admin" permission, however its description does not include this kind of access and thus it could have caused unintentional access in the field, allowing a "Settings Admin" user to elevate their own permissions or change those of others. All kinds of user management now require the "Admin" permission. A future version of OctoPrint will also drop the confusing Settings Admin permission, see #4641 for the roadmap for this.
  • Severity Medium (6): A malicious admin user could upload a specially crafted language pack containing one or more symlinks to files on the OctoPrint server, which would then be contained in created backups and could thus be extracted that way. This could be used by a malicious admin user to extract files from the OctoPrint server readable by the system user the OctoPrint server is running under, including OS files outside the scope of OctoPrint. This has been fixed.
  • Severity Medium (5.3): Improved security of the password change dialog in as that it now requires you to enter your current password before allowing you to set a new one. Admins are still able to change the passwords of users without this requirement. See also CVE-2022-2930.
  • Severity Medium (5.3): Fixed a buggy permission role that assigned the ability to enable/disable/uninstall plugins to users with the List Plugins permission. Note that installing plugins was not also included in this. This could have been used by read-only or operator users to enable, disable or uninstall already installed plugins, without the need for an administrator. See also CVE-2022-3068.
  • Severity Medium (4.4): OctoPrint's login sessions will now expire after a short time (15min), unless kept alive by keeping a tab open. The remember me cookie will expire after 90 days. Sessions and the remember me cookie will also become invalid on password change. This prevents the reuse of old session credentials or remember me cookies somehow obtained by an attacker (e.g. through a compromised browser or a forgotten on a shared system). See also CVE-2022-2888
  • Severity Medium (4.2): The password hashing has been switched to Argon2. Existing password hashes will be migrated transparently to this new hashing approach on login of the individual accounts, a backup of the old file will be made (and automatically removed again in a future version). Important: That means that you can not downgrade easily from 1.8.3 to a version prior. If you need to downgrade, please see this FAQ entry.
  • Severity Low (3.7): A rate limit on the login dialog has been introduced to thwart attempts at bruteforcing a working username/password combo. After a number of failed attempts to login (3/minute, 5/10 minutes, 10/hour), you are denied further attempts until the hit rate limit expires. It will extend on each further failed attempt. The rate limit is tracked per client IP and will reset on server restart. See also CVE-2022-2822.
  • Severity Low (3.7): Fixed a bug that allowed someone to upload a .gcode file but then rename it to .html or similar through OctoPrint's move file functionality. This could have been used to launch a phishing or scripting attack on an unsuspecting user of the same OctoPrint instance. This has now been fixed as in that the move file feature only supports moving/renaming to file extensions that are supported for upload as well. See also CVE-2022-2872.
  • Severity Low (3.5): A user with the "Files Upload" permission but without the "Files Delete" permission was able to overwrite and thus effectively delete files. OctoPrint will now require the "Files Delete" permission to perform an overwrite.
  • Severity Low (3.5): While logs where not displayed on the terminal tab without the "Monitor Terminal" permission, they were still sent on the web socket. This has been rectified.
  • Severity Informational (0.0): It was possible to download files from the backup download endpoint (accessible only by admins) that weren't backups. This could possibly have been abused by a malicious admin user that first got something there somehow that wasn't a backup and then extracting it this way. While the question as to why that would be a preferable approach to extract data from a server you have full admin access to remains unanswered, this no longer is possible now regardless.
  • Severity Informational (0.0): Limited folder config in UI to uploads, timelapses and watched folder. Everything else needs to be configured through config.yaml.

🐛 Bug fixes

  • Fixed a bug that prevented user creation without any attached groups. If no group was attached, OctoPrint so far forced the default user group "Operator" to be attached to the user. This has been solved.
  • Fixed a styling issue in the appearance settings.

🎉 Special thanks to all the contributors!

Special thanks to everyone who contributed to this bugfix release!

🔗 More information

  • Commits
  • As this is a bugfix release, there were no release candidates

- Python
Published by foosel over 3 years ago

octoprint - 1.8.2

✋ Heads-ups

The heads-ups from 1.8.0 still apply, please read this release's release notes as well for a full picture of what you should be aware of and what changed!

⛈ Issues while updating?

On every new OctoPrint release we see some people run into the same issues with outdated or broken environments all over again. If you encounter a problem during update, please check this collection of the most common issues encountered over the past couple of release cycles first, and test if the included fixes solve your problem.

♻ Changes

🔒 Security fixes

  • Fixed an open redirect vulnerability in the login dialog. An attacker could send a login URL with a specially crafted redirect parameter pointing to an external page under their control to an instance admin that if used to login would redirect this URL, allowing the attacker to start a phishing attack. This is not directly exploitable by the attacker, but after a successful phishing attack and thus obtained credentials could be used to gain access to the OctoPrint instance if somehow reachable by the attacker (e.g. if you have exposed your OctoPrint instance on the public internet or another hostile network contrary to the project's recommendations). Thanks to "Mizu" for reporting and disclosing this responsibly.

🐛 Bug fixes

  • Pinned the Flask dependency to 2.1. The latest release requires a version of werkzeug that we currently cannot upgrade to due to yet another dependency, and there seem to have been cases in the field where users managed to update Flask regardless of the werkzeug version pin in OctoPrint, which caused runtime errors. This has not been successfully reproduced in the development environment, but a version pin here is a sensible precaution.

🎉 Special thanks to all the contributors!

Special thanks to everyone who contributed to this bugfix release!

Also a big thank you to Mizu for responsibly disclosing the security vulnerability that was fixed in this release.

🔗 More information

  • Commits
  • As this is a bugfix release, there were no release candidates

- Python
Published by foosel over 3 years ago

octoprint - 1.8.1

✋ Heads-ups

The heads-ups from 1.8.0 still apply, please read this release's release notes as well for a full picture of what you should be aware of and what changed!

⛈ Issues while updating?

On every new OctoPrint release we see some people run into the same issues with outdated or broken environments all over again. If you encounter a problem during update, please check this collection of the most common issues encountered over the past couple of release cycles first, and test if the included fixes solve your problem.

♻ Changes

🔒 Security fixes

  • Fixed a cross-site scripting vulnerability in the user and group managers. An attacker could talk an admin into creating a user or group with a specially crafted name containing executable HTML/JS, and then into deleting those again, triggering the cross-site scripting issue in the deletion confirmation dialog. A stealing of credentials through this should not have been possible under 1.8.0, however in versions before 1.8.0 the stealing of the "remember me" token would have been possible through this attack vector. This could have then been used to gain access to the OctoPrint instance if somehow reachable by the attacker (e.g. if you have exposed your OctoPrint instance on the public internet or another hostile network contrary to the project's recommendations). Thanks to Akshay Ravi for reporting and disclosing this reponsibly.

🐛 Bug fixes

  • #4516 - Fix a redirect loop on the login dialog if the Guests group was assigned the Read-Only group as a subgroup.
  • Gracefully handle errors scanning /dev for serial ports. Solves an issue with Octo4a on some Android devices.

🎉 Special thanks to all the contributors!

Special thanks to everyone who contributed to this bugfix release!

Also a big thank you to User avatar Akshay Ravi for responsibly disclosing the security vulnerability that was fixed in this release.

🔗 More information

  • Commits
  • As this is a bugfix release, there were no release candidates

- Python
Published by foosel almost 4 years ago

octoprint - 1.8.0

✋ Heads-ups

💥 OctoPrint 1.8.0 drops Python 2 support!

As previously announced on the OctoBlog and in OctoPrint On Air #43, OctoPrint 1.8.0 drops Python 2 support. In order to be able to install/update to it, you need to be running OctoPrint under Python 3 already, e.g. as shipped on OctoPi 0.18.0. Installing on Python 2 will fail. The Software Updater will also be redirected to a new OctoPrint Legacy repository for checking for OctoPrint updates if it detects that you are still running Python 2. As outlined in the blog post and the vlog, there are no more updates for OctoPrint 1.7/Python 2 planned. Update now or you will be left behind, including for most security fixes!

If you are unsure what version of Python your OctoPrint instance is running under, open the web interface and look into the lower left corner where it will tell you:

image

This is also covered in the FAQ.

🔒 OctoPrint 1.8.0 fixes some reported security issues, update ASAP!

While OctoPrint 1.8.0rc5 was undergoing testing, three security vulnerabilities were disclosed to me. These issues are fixed in the stable release of 1.8.0. Since these vulnerabilities are of low concern for instances that are not publicly exposed on the internet or other hostile networks, as strongly recommended, the fixes will not be backported to OctoPrint 1.7.x and thus instances still under Python 2.

Please update your OctoPrint instance to the latest stable version of OctoPrint 1.8.0 as soon as possible.

🧩 Heads-ups for plugin authors

Click to expand. #### 🧩 Importing Jinja2 templates from another plugin without an explicit prefix is now deprecated! OctoPrint so far allowed (erroneously) to replace plugin templates of the same name in another plugin, depending on loading order. Fixing this required to create prefixes for templates of plugins. Relative imports (think `{% include "snippets/my_snippet.jinja2" %}`) will now attempt to resolve against the current plugin. If that isn't possible, *for now* it will also be attempted to resolve globally against all registered templates and if a match is found, a deprecation will be logged. The latter behaviour will be removed in a future version of OctoPrint and *if* your plugin includes templates from other plugins you should now change it to using plugin prefixes if running on OctoPrint 1.8.0 or higher. Plugin prefixes are `plugin_/`, so for example, to include the settings pane of the bundled software update plugin, you'd now need to use `plugin_softwareupdate/plugin_softwareupdate_settings.jinja2`. #### 🧩 `octoprint.util.bom_aware_open` is now deprecated and will be removed in 2.0.0 If your code uses `bom_aware_open`, you should replace its use with the regular `open` with `utf-8-sig` encoding instead (or `io.open` in py2/3 compatibility mode). #### 🧩 `octoprint.util.commandline.clean_ansi` will no longer accept `bytes` in 2.0.0 If your code uses `clean_ansi` somewhere, make sure you supply it with `str` (formerly known as `unicode`) instead of `bytes` objects. #### 🧩 `Settings._config` is read-only! If your plugin code has been using `Settings._config` to modify what gets stored in `config.yaml`, this will no longer work. It never was a supported method, however it did work due to how things were implemented internally. Implementation has changed now so that any code doing this will no longer work - the nested dictionary returned by the `Settings._config` is only a copy of the internal data structure and thus any modifications will be dropped silently. A deprecation warning has been added just in case. Use the provided `set` and `remove` methods on the settings object instead please.

♻ Changes

🔒 Security fixes

  • CVE-2022-1430 - Fixed a Cross Site Scripting vulnerability in the login dialog. An attacker could send a login URL with a specially crafted redirect parameter to an instance admin that if used to login would allow the attacker to steal the "remember me" cookie. This could have then be used to gain access to the OctoPrint instance with the victim's credentials, if somehow reachable by the attacker (e.g. if you have exposed your OctoPrint instance on the public internet or another hostile network contrary to the project's recommendations). Thanks to "rajbabai8" for reporting and disclosing this reponsibly.
  • CVE-2022-1432 - Fixed a Cross Site Scripting vulnerability in the webcam stream URL test. An attacker could talk an instance administrator into inserting a specially crafted HTML/JS snippet into the webcam settings and then ask them to click "test", making the JS code run and potentially steal the remember me token. This could have then been used to gain access to the OctoPrint instance if somehow reachable by the attacker (e.g. if you have exposed your OctoPrint instance on the public internet or another hostile network contrary to the project's recommendations). Thanks to "rajbabai8" for reporting and disclosing this reponsibly.
  • Fixed an open redirect vulnerability in the login dialog. An attacker could send a login URL with a redirect parameter pointing to an external page under their control to an instance admin that if used to login would redirect this URL, allowing the attacker to start a phishing attack. This is not directly exploitable by the attacker, but after a successful phishing attack and thus obtained credentials could be used to gain access to the OctoPrint instance if somehow reachable by the attacker (e.g. if you have exposed your OctoPrint instance on the public internet or another hostile network contrary to the project's recommendations). Thanks to "rajbabai8" for reporting and disclosing this reponsibly.
  • Fixed a Cross Site Scripting vulnerability in the login dialog regarding the userId parameter. It is currently unconfirmed if this could have been used for an attack.
  • Set the "remember me" cookie to http only. This prevents an attacker from accessing the cookie via JavaScript, e.g. in the context of Cross Site Scripting attacks.

✨ Features & improvements

  • #3261 - The temperature tab now has (optional) event markers for when a print gets started, paused, resumed, cancelled or finishes. (PR #4382)
  • #3491 - Added new events FileMoved and FolderMoved, see the documentation for details on payload. (PR #4405)
  • #3589 - Software Update: You may now enqueue software updates while a print is ongoing. They will then be started (after a short countdown) after successful completion of the print, or manually if you cancelled the print. You can manage the queue during the print to remove items you don't want enqueued after all, or add additional items to it as well. (PR #4364)
  • #3868 - Optionally remember (and restore) the last opened folder in the files list in the browser if enabled in the features. (PR #4291)
  • #4179 - Gcode Viewer: Every fifth grid line (= every 5cm) will now be drawn slightly thicker to allow for easier counting and mapping of physical location. (PR #4287)
  • #4186 (PR) - Added support for changing order in which plugin hooks & implementation callbacks are called by OctoPrint.
  • #4218 - Gcode Viewer: Prevent mouse wheel from scrolling entire page and panning the canvas. (PR #4274)
  • #4221 (PR) - Improved performance of serial device lookup.
  • #4222 (PR) - Improved performance of all yaml operations by using the C based loader when possible.
  • #4223 (PR) - Added a ripgrep ignore file.
  • #4225 (PR) - Added a first version for embedding WebRTC based webcams. Please note that this should be considered beta and is still subject to change while further work and research is being done on the backend side of things.
  • #4227 - Added a help message that reminds users that username and password are case sensitive. (PR #4246).
  • #4228 - Switch the code to use utf-8-sig encoding instead of bom_aware_open and deprecated bom_aware_open. It will be removed in 2.0.0.
  • #4230 (PR) - Improved settings processing performance by optimizing deep_dict and using pickle for deep-copying.
  • #4235 (PR) - Added a Server-Timing response header to the API responses to allow for better profiling.
  • #4236 (PR) - Improved settings processing performance by reimplementing the underlying data structure as a flattened instead of a nested chainmap.
  • #4237 - Added a heads-up for when no serial port could be found in the system, with a link to the corresponding FAQ entry with additional steps. Also added a notification for port auto detection failure, linking to the same FAQ entry. This behaviour can be disabled by setting serial.ignoreEmptyPorts to true in config.yaml.
  • #4241 (PR) - Added tracebacks to TypeErrors caught in Plugin Settings.
  • #4244 (PR) - Return to depend on frozendict under Python 3 instead of immutabledict, as it's now maintained again.
  • #4280 (PR) - Websocket clients can now selectively subscribe to messages on the socket. See the docs for the new subscribe message on the push socket.
  • #4289 (PR) - Add Python 3.10 to automatic tests and package classifiers.
  • #4314 - Plugin Manager: It's now possible to bulk enable/disable plugins. This makes it easier for the user to locate plugins that are causing problems in the system.
  • #4317 - Non-Gcode commands can now also be defined as long running, as long as they do not have any parameters.
  • #4320 (PR) - Change some references links to https.
  • #4322 (PR) - Drastically reduced bandwidth used by the web socket by enabling the permessage-deflate extension of the websocket protocol.
  • #4324 (PR) - Virtual printer: Support for printer locking (Marlin's PASSWORD_FEATURE).
  • #4332 - Software Update: Improved logging in case of failures in running update checks, e.g. GitHub release fetching with an outdated PAT. Failing requests of any kind now generate a log entry and are also reflected in the frontend, similar to rate limiting situations.
  • #4337 (PR) - Plugin Manager: Added a new endpoint /plugin/pluginmanager/plugins/versions and associated PLUGIN_PLUGINMANAGER_LIST permission that allows to list installed plugins and their versions in a machine readable JSON format. Useful for 3rd party plugin to determine plugins available on the connected OctoPrint instance.
  • #4339 (PR) - Announcements: Improve performance by using a new encoding/decoding strategy for the cache and caching the parsed feed instead of the raw xml.
  • #4340 (PR) - Plugin Manager: Improve performance of plugin notification retrieval by caching parsed version structures.
  • #4352 - Event Manager: Added a note that event handlers are async.
  • #4353 - Expose configuration of default extrusions length on the UI (again) and also move it into the printer profile. (PR #4416)
  • #4356 - Added <noscript> to login page to give a heads-up if JS is disabled which is required for OctoPrint and its login page to function.
  • #4357 - Support for the "Host Shutdown" Action command can now be enabled so you can shut down the whole server via your printer's menu if supported by your firmware. Note that this disabled by default and has to be enabled via Settings > Serial Connection > Firmware & Protocol > Action Commands. (PR #4358)
  • #4363 - Software Update: New option force_reinstall for the pip updater. If set to true it will have the updater run a double install, once normal, once with --force-reinstall and --no-deps (to force a reinstall of the package but not all its dependencies).
  • #4363 - Plugin Manager & Software Update: Refactor pip error handling to be shared between Software Update, Plugin Manager and whatever else might need it.
  • #4368 - The Gcode command used to cancel an SD card print is now configurable and defaults to M25. (PR #4408)
  • #4370 (PR) - Timelapse: Recordings will now get a preview thumbnail rendered and displayed. A command line command has been added as well to generate thumbnails for already existing recordings via octoprint timelapse create_thumbnails, see octoprint timelapse create_thumbnails --help for usage information.
  • #4375 - Implement rotate & mirror functionality for HLS (& the new WebRTC) camera embeds. (PR #4378)
  • #4385 (PR) - Improve error reporting on failure to open serial port.
  • #4387 (PR) - Disable spell check on various search fields.
  • #4388 (PR) - Automatically parse additional temperature fields from M105 report/temperature autoreport and provide them on the internal and REST APIs.
  • #4390 (PR) - The encoding to use for the serial connection can now be configured via serial.encoding in config.yaml. It defaults to ascii but any other encoding recognized by Python can be used here if the printer requires it. Probably only relevant for now for very specific builds.
  • #4396 - Support --no-color command line argument and also NO_COLOR environment variable standard to disable coloring of standard (logging) output on command line. (PR #4402)
  • #4399 (PR) - Streamed ZIP downloads (e.g. the systeminfo bundle or bundled timelapses) now come with a Content-Length. Backport of PR #4313.
  • #4403 (PR) - New development related CLI command octoprint dev css:build. Can be used to run lessc against all relevant files. Note that you'll first need to install lessc via npm i -g less. For usage details see octoprint dev css:build --help.
  • #4423 - Expose serial.unknownCommandsNeedAck and serial.sendChecksumWithUnknownCommands in UI and assume them to be true if Prusa Firmware is detected to combat issues that might otherwise arise with MMU usage due to non-standard Tc and Tx commands. See also discussion in prusa3d/Prusa-Firmware#3411.
  • #4427 (PR) - Increase web socket connect timeout to reduce likelihood of less performant transport fallback in case of slow initial connection.
  • #4430 (PR) - Gcode Viewer: Improved overall memory utilization by switching underlying data structure from an AVL tree to a binary tree. As a welcome side effect, this also fixed #2243.
  • #4432 (PR) - Gcode Viewer: Further memory usage improvement by switching the line split of the loader from using a regex to using a simple string split.
  • #4437 (PR) - Support two digit flavors of G0 through G3 in Gcode Viewer and Gcode analysis (so, G00 through G03). Relevant for CNC applications.
  • #4443 (PR) - Software Update: Allow setting the GitHub Personal Access Token (to work around rate limiting issues) via the UI.
  • #4460 - Expose new config flag serial.ignoreEmptyPorts to ignore empty serial ports and maintain pre 1.8.0 default behaviour regarding the handling of the situation on the UI as well (see Serial Connection > General > Connection > Advanced Options > Ignore empty ports).
  • OctoPrint now requires Python 3.7 or newer. Starting with this release OctoPrint is Python 3 only. See also the heads-up above. Correspondingly also switched all links in the docs and the UI to the Python docs to refer to Python 3 docs instead of Python 2.
  • Added last safe mode date & reason to the system info bundle. This will allow to determine if safe mode was recently launched, and also allow to determine why it was launched.
  • Rephrased system info bundle sharing instructions and removed copy button for short system info text to discourage sharing that instead of the full bundle, which we've sadly seen a ton over the past few months.
  • Removed the webassets cache as it only makes a difference during development, and removing it closes a potential abuse vector.
  • Improved performance of CLI command listings.
  • Instead of silently ignoring a select/print on file upload if the necessary preconditions aren't met, include the effective select/print flags on the upload API and int he triggered UPLOAD event.
  • Update version requirement for PiSupport plugin to latest release
  • Harden against wonky firmware temperature responses that might lead to hotend or bed temperature values to be overwritten with something else by only ever using the first value for a sensor key seen in the response.
  • Application Keys: The plugin now supports a stand-alone authentication dialog which can be accessed via the auth_dialog property returned in response to an app token request. Third party clients can use this lightweight alternative to request an API key on behalf of a user without having to display/load the whole OctoPrint UI.
  • Application Keys: Add docs for new auth dialog work flow.
  • Discovery: Add new config options to ignore interfaces (plugins.discovery.ignoredInterfaces) and limit zeroconf to configured/not ignored interfaces only.
  • Gcode Viewer: Added more progress info during loading process.
  • Plugin Manager: Support .whl uploads as well.
  • Software Update: Improved the update & check buttons. "Update all" will now only update enabled items, "Update all available" (in the new dropdown) will updated enabled and muted items, "Check for updates" does what it always did, "Force check for updates" (dropdown) bypasses the cache, and notification muting and underlying logic is now explained in a footer.
  • Software Update: Put a stronger warning about automatic updates of pip in place.
  • Tracking: Include octopiuptodate_build from PiSupport Plugin, if set. This gives us a better overview on what specific environments to test and develop against.
  • Virtual Printer: Added ability to simulate broken Klipper MCU connection.
  • Translation improvements (PR #4290, PR #4385, PR #4386)
  • Cleaned up code here and there.

🐛 Bug fixes

  • #2243 (PR) - GCode Viewer: Properly display sequentially printed files. Welcome side effect of #4430.
  • #4153 - Fix default ffmpeg commandline (-framerate instead of -r) to ensure ffmpeg generates correct progress reports while rendering a timelapse (PR #4344)
  • #4212 - Fix file selection not properly updating when selecting a file to print from the printer controller.
  • #4238 - Software Update: Fix handling of plugin downgrades on release channel switch.
  • #4240 (PR) - Improve memory footprint of client side terminal by fixing a wrong use of _.map.
  • #4242 - Refocus username input field in the login form on authentication failure (PR #4249)
  • #4260 - Fixed the wrong behaviour that plugins could overwrite plugin templates of other plugins by giving them the same name by making plugin template includes relative and requiring prefixes to address templates of other plugins. See also the associated heads-up for plugin authors above (PR #4281)
  • #4299 - Don't try to enter cancelling state again if already in it.
  • #4316 - Fix timelapse temp folder configuration, which wasn't possible via the UI since 1.5.0.
  • #4321 (PR) - Fixed the offline indicator icon.
  • #4336 (PR) - Don't treat paused state as "ready to print" on APIs.
  • #4349 (PR) - Fix some issues where the timelapse documentation didn't match the implementation (by fixing the docs).
  • #4362 - Fix parsing of version numbers, no longer truncates version after first -.
  • #4363 - Plugin Manager & Software Update: Fix "already installed" detection for newer versions of pip.
  • #4365 - Fix failing timelapse snapshots if the printed file contains a %. (PR #4366)
  • #4367 - Fix error message displayed when attempting to upload a file that is already printed, now properly reflects the issue at hand.
  • #4380 - Fix connectivity check against IPV6 targets. OctoPrint will now first try to reach the host via IPV6 (if enabled), if that fails, fall back to IPV4, and only if that fails too report a connection failure.
  • #4392 - Fix an encoding bug in the clean_ansi helper used for cleaning pip output. Issue caused plugin installation/deinstallation/updates, OctoPrint updates and backups to fail against pip 22+ due to an introduction of a UTF-8 separator line in that.
  • #4396 - Fix colors of standard (logging) output on command line to be better suited for light backgrounds. (PR #4402)
  • #4404 (PR) - Fix less build under less v4
  • #4417 - Fix a faulty regex that caused custom events with uppercase identifiers to generated events names with a double _.
  • #4433 (PR) - Don't load Font Awesome twice.
  • #4439 (PR) - Software Update: Use the correct ignore_throttled setting.
  • #4449 (PR) - Gcode Viewer: Only clear state on event when idle.
  • #4453 (regression) - Improve resilience against broken plugin template configs.
  • #4454 (regression) - Fix a fatal error in the refactored settings hierarchy upon encountering an int key.
  • #4456 (regression) - Fix a serial loop crash when encountering a custom temperature entry (or garbage that looks like one) that matches the too broadly defined reserved identifier regex.
  • #4458 (regression) - Fix retrieval of full dict structures from the settings for which an empty default exists.
  • #4459 (regression) - GCode Viewer: Fix transmission of parsed layer data structure from the worker to the main thread.
  • #4463 (regression) - GCode Viewer: Fix viewer not showing the last layer.
  • #4479 (regression) - Further harden new settings structure against invalid data structures from third party plugins.
  • #4486 (regression) - Fix changing of folder paths via the settings.
  • Fix parsing of firmware capability lines containing the string NAME: getting matched by the M115 response parser instead of the capability parser, by moving the capability parser before the M115 response parser.
  • Fix firmware info inclusion in systeminfo.txt of system info bundle.
  • Improved error resilience in hook processing. Hooks running into errors could prevent commands to be sent to the printer altogether, which has now been rectified.
  • Got rid of a deprecation warning in the plugin sub system by refactoring some code.
  • Clear position recording flag in communication layer on cancel/pause preparation timeout.
  • Reset position data in communication layer on cancel/pause preparation.
  • Add some missing less 4 compatibility fixes
  • Work around a compatibility issue between latest werkzeug and flask-login releases by pinning werkzeug to 2.0.x.
  • (regression) Fix version requirement of PiSupport plugin
  • (regression) Fixed a potential race condition that could cause an Internal Server Error on initial page load (self-fixing on the next reload though). Likely a regression caused by the changes to the webassets cache handling.

🎉 Special thanks to all the contributors!

Special thanks to everyone who contributed to this release, especially to @adamwolf, @ademuri, @cp2004, @crysxd, @DShenkle, @flaviut, @gdombiak, @GonzoDMX, @jneilliii, @johnboiles, @JoveToo, @kantlivelong, @kohend, @LazeMSS, @MartijnBraam, @NilsRo, @OllisGit, @pR0Ps, @QuinnDamerell, @rooterkyberian@Rotzbua, @surdu, @synman, @The-EG, @thelastWallE, @TylonHH and @vector76 for their PRs!

Also a big thank you to rajbabai8 for responsibly disclosing the security vulnerabilities that were fixed in this release.

🔗 More information

- Python
Published by foosel almost 4 years ago

octoprint - 1.8.0rc5 (release candidate)

⚠️ 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!

✋ Heads-up

All of the heads-ups of 1.8.0rc1 apply.

Heads-up for plugin authors: Settings._config is read-only!

If your plugin code has been using Settings._config to modify what gets stored in config.yaml, this will no longer work. It never was a supported method, however it did work due to how things were implemented internally. Implementation has changed now so that any code doing this will no longer work - the nested dictionary returned by the Settings._config is only a copy of the internal data structure and thus any modifications will be dropped silently. A deprecation warning has been added just in case. Use the provided set and remove methods on the settings object instead please.

✨ Improvements

  • Harden against wonky firmware temperature responses that might lead to hotend or bed temperature values to be overwritten with something else by only ever using the first value for a sensor key seen in the response.

🐛 Bug fixes

  • #4486 (regression) - Fix changing of folder paths via the settings.

🎉 Special thanks to all the contributors!

Special thanks to everyone who contributed to this release candidate and provided full, analyzable bug reports!

🔗 More information

- Python
Published by foosel almost 4 years ago

octoprint - 1.8.0rc4 (release candidate)

⚠️ 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!

✋ Heads-up

All of the heads-ups of 1.8.0rc1 apply.

🐛 Bug fixes

  • #4479 (regression) - Further harden new settings structure against invalid data structures from third party plugins.

🎉 Special thanks to all the contributors!

Special thanks to everyone who contributed to this release candidate and provided full, analyzable bug reports!

🔗 More information

- Python
Published by foosel almost 4 years ago

octoprint - 1.8.0rc3 (release candidate)

⚠️ 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!

✋ Heads-up

All of the heads-ups of 1.8.0rc1 apply.

✨ Improvements

  • Update version requirement for PiSupport plugin to latest release

🐛 Bug fixes

  • #4463 (regression) - GCode Viewer: Fix viewer not showing the last layer.
  • Fixed a potential race condition that could cause an Internal Server Error on initial page load (self-fixing on the next reload though). Likely a regression caused by the changes to the webassets cache handling.
  • Work around a compatibility issue between latest werkzeug and flask-login releases by pinning werkzeug to 2.0.x.

🎉 Special thanks to all the contributors!

Special thanks to everyone who contributed to this release candidate and provided full, analyzable bug reports!

🔗 More information

- Python
Published by foosel almost 4 years ago

octoprint - 1.8.0rc2 (release candidate)

⚠️ 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!

✋ Heads-up

All of the heads-ups of 1.8.0rc1 apply.

✨ Improvements

  • #4460 - Expose new config flag serial.ignoreEmptyPorts to ignore empty serial ports and maintain pre 1.8.0 default behaviour regarding the handling of the situation on the UI as well (see Serial Connection > General > Connection > Advanced Options > Ignore empty ports).
  • Application Keys: Add docs for new auth dialog work flow.

🐛 Bug fixes

  • #4453 (regression) - Improve resilience against broken plugin template configs.
  • #4454 (regression) - Fix a fatal error in the refactored settings hierarchy upon encountering an int key.
  • #4456 (regression) - Fix a serial loop crash when encountering a custom temperature entry (or garbage that looks like one) that matches the too broadly defined reserved identifier regex.
  • #4458 (regression) - Fix retrieval of full dict structures from the settings for which an empty default exists.
  • #4459 (regression) - GCode Viewer: Fix transmission of parsed layer data structure from the worker to the main thread.
  • Add some missing less 4 compatibility fixes
  • Fix version requirement of PiSupport plugin

🎉 Special thanks to all the contributors!

Special thanks to everyone who contributed to this release candidate and provided full, analyzable bug reports!

🔗 More information

- Python
Published by foosel almost 4 years ago

octoprint - 1.8.0rc1 (release candidate)

⚠️ 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!

✋💥 Heads-up: OctoPrint 1.8.0 drops Python 2 support!

As previously announced on the OctoBlog and in OctoPrint On Air #43, OctoPrint 1.8.0 drops Python 2 support. In order to be able to install/update to it, you need to be running OctoPrint under Python 3 already, e.g. as shipped on OctoPi 0.18.0. Installing on Python 2 will fail. The Software Updater will also be redirected to a new OctoPrint Legacy repository for checking for OctoPrint updates if it detects that you are still running Python 2. As outlined in the blog post and the vlog, there are no more updates for OctoPrint 1.7/Python 2 planned. Update now or you will be left behind.

If you are unsure what version of Python your OctoPrint instance is running under, open the web interface and look into the lower left corner where it will tell you:

image

This is also covered in the FAQ.

✋🧩 Heads-up for plugin authors: Importing Jinja2 templates from another plugin without an explicit prefix is now deprecated!

OctoPrint so far allowed (erroneously) to replace plugin templates of the same name in another plugin, depending on loading order. Fixing this required to create prefixes for templates of plugins. Relative imports (think {% include "snippets/my_snippet.jinja2" %}) will now attempt to resolve against the current plugin. If that isn't possible, for now it will also be attempted to resolve globally against all registered templates and if a match is found, a deprecation will be logged. The latter behaviour will be removed in a future version of OctoPrint and if your plugin includes templates from other plugins you should now change it to using plugin prefixes if running on OctoPrint 1.8.0 or higher. Plugin prefixes are plugin_<plugin identifier>/, so for example, to include the settings pane of the bundled software update plugin, you'd now need to use plugin_softwareupdate/plugin_softwareupdate_settings.jinja2.

✋🧩 Heads-up for plugin authors: octoprint.util.bom_aware_open is now deprecated and will be removed in 2.0.0

If your code uses bom_aware_open, you should replace its use with the regular open with utf-8-sig encoding instead (or io.open in py2/3 compatibility mode).

✋🧩 Heads-up for plugin authors: octoprint.util.commandline.clean_ansi will no longer accept bytes in 2.0.0

If your code uses clean_ansi somewhere, make sure you supply it with str (formerly known as unicode) instead of bytes objects.

✨ Features & improvements

  • #3261 - The temperature tab now has (optional) event markers for when a print gets started, paused, resumed, cancelled or finishes. (PR #4382)
  • #3491 - Added new events FileMoved and FolderMoved, see the documentation for details on payload. (PR #4405)
  • #3589 - Software Update: You may now enqueue software updates while a print is ongoing. They will then be started (after a short countdown) after successful completion of the print, or manually if you cancelled the print. You can manage the queue during the print to remove items you don't want enqueued after all, or add additional items to it as well. (PR #4364)
  • #3868 - Optionally remember (and restore) the last opened folder in the files list in the browser if enabled in the features. (PR #4291)
  • #4179 - Gcode Viewer: Every fifth grid line (= every 5cm) will now be drawn slightly thicker to allow for easier counting and mapping of physical location. (PR #4287)
  • #4186 (PR) - Added support for changing order in which plugin hooks & implementation callbacks are called by OctoPrint.
  • #4218 - Gcode Viewer: Prevent mouse wheel from scrolling entire page and panning the canvas. (PR #4274)
  • #4221 (PR) - Improved performance of serial device lookup.
  • #4222 (PR) - Improved performance of all yaml operations by using the C based loader when possible.
  • #4223 (PR) - Added a ripgrep ignore file.
  • #4225 (PR) - Added a first version for embedding WebRTC based webcams. Please note that this should be considered beta and is still subject to change while further work and research is being done on the backend side of things.
  • #4227 - Added a help message that reminds users that username and password are case sensitive. (PR #4246).
  • #4228 - Switch the code to use utf-8-sig encoding instead of bom_aware_open and deprecated bom_aware_open. It will be removed in 2.0.0.
  • #4230 (PR) - Improved settings processing performance by optimizing deep_dict and using pickle for deep-copying.
  • #4235 (PR) - Added a Server-Timing response header to the API responses to allow for better profiling.
  • #4236 (PR) - Improved settings processing performance by reimplementing the underlying data structure as a flattened instead of a nested chainmap.
  • #4237 - Added a heads-up for when no serial port could be found in the system, with a link to the corresponding FAQ entry with additional steps. Also added a notification for port auto detection failure, linking to the same FAQ entry. This behaviour can be disabled by setting serial.ignoreEmptyPorts to true in config.yaml.
  • #4241 (PR) - Added tracebacks to TypeErrors caught in Plugin Settings.
  • #4244 (PR) - Return to depend on frozendict under Python 3 instead of immutabledict, as it's now maintained again.
  • #4280 (PR) - Websocket clients can now selectively subscribe to messages on the socket. See the docs for the new subscribe message on the push socket.
  • #4289 (PR) - Add Python 3.10 to automatic tests and package classifiers.
  • #4314 - Plugin Manager: It's now possible to bulk enable/disable plugins. This makes it easier for the user to locate plugins that are causing problems in the system.
  • #4317 - Non-Gcode commands can now also be defined as long running, as long as they do not have any parameters.
  • #4320 (PR) - Change some references links to https.
  • #4322 (PR) - Drastically reduced bandwidth used by the web socket by enabling the permessage-deflate extension of the websocket protocol.
  • #4324 (PR) - Virtual printer: Support for printer locking (Marlin's PASSWORD_FEATURE).
  • #4332 - Software Update: Improved logging in case of failures in running update checks, e.g. GitHub release fetching with an outdated PAT. Failing requests of any kind now generate a log entry and are also reflected in the frontend, similar to rate limiting situations.
  • #4337 (PR) - Plugin Manager: Added a new endpoint /plugin/pluginmanager/plugins/versions and associated PLUGIN_PLUGINMANAGER_LIST permission that allows to list installed plugins and their versions in a machine readable JSON format. Useful for 3rd party plugin to determine plugins available on the connected OctoPrint instance.
  • #4339 (PR) - Announcements: Improve performance by using a new encoding/decoding strategy for the cache and caching the parsed feed instead of the raw xml.
  • #4340 (PR) - Plugin Manager: Improve performance of plugin notification retrieval by caching parsed version structures.
  • #4352 - Event Manager: Added a note that event handlers are async.
  • #4353 - Expose configuration of default extrusions length on the UI (again) and also move it into the printer profile. (PR #4416)
  • #4356 - Added <noscript> to login page to give a heads-up if JS is disabled which is required for OctoPrint and its login page to function.
  • #4357 - Support for the "Host Shutdown" Action command can now be enabled so you can shut down the whole server via your printer's menu if supported by your firmware. Note that this disabled by default and has to be enabled via Settings > Serial Connection > Firmware & Protocol > Action Commands. (PR #4358)
  • #4363 - Software Update: New option force_reinstall for the pip updater. If set to true it will have the updater run a double install, once normal, once with --force-reinstall and --no-deps (to force a reinstall of the package but not all its dependencies).
  • #4363 - Plugin Manager & Software Update: Refactor pip error handling to be shared between Software Update, Plugin Manager and whatever else might need it.
  • #4368 - The Gcode command used to cancel an SD card print is now configurable and defaults to M25. (PR #4408)
  • #4370 (PR) - Timelapse: Recordings will now get a preview thumbnail rendered and displayed. A command line command has been added as well to generate thumbnails for already existing recordings via octoprint timelapse create_thumbnails, see octoprint timelapse create_thumbnails --help for usage information.
  • #4375 - Implement rotate & mirror functionality for HLS (& the new WebRTC) camera embeds. (PR #4378)
  • #4385 (PR) - Improve error reporting on failure to open serial port.
  • #4387 (PR) - Disable spell check on various search fields.
  • #4388 (PR) - Automatically parse additional temperature fields from M105 report/temperature autoreport and provide them on the internal and REST APIs.
  • #4390 (PR) - The encoding to use for the serial connection can now be configured via serial.encoding in config.yaml. It defaults to ascii but any other encoding recognized by Python can be used here if the printer requires it. Probably only relevant for now for very specific builds.
  • #4396 - Support --no-color command line argument and also NO_COLOR environment variable standard to disable coloring of standard (logging) output on command line. (PR #4402)
  • #4399 (PR) - Streamed ZIP downloads (e.g. the systeminfo bundle or bundled timelapses) now come with a Content-Length. Backport of PR #4313.
  • #4403 (PR) - New development related CLI command octoprint dev css:build. Can be used to run lessc against all relevant files. Note that you'll first need to install lessc via npm i -g less. For usage details see octoprint dev css:build --help.
  • #4423 - Expose serial.unknownCommandsNeedAck and serial.sendChecksumWithUnknownCommands in UI and assume them to be true if Prusa Firmware is detected to combat issues that might otherwise arise with MMU usage due to non-standard Tc and Tx commands. See also discussion in prusa3d/Prusa-Firmware#3411.
  • #4427 (PR) - Increase web socket connect timeout to reduce likelihood of less performant transport fallback in case of slow initial connection.
  • #4430 (PR) - Gcode Viewer: Improved overall memory utilization by switching underlying data structure from an AVL tree to a binary tree. As a welcome side effect, this also fixed #2243.
  • #4432 (PR) - Gcode Viewer: Further memory usage improvement by switching the line split of the loader from using a regex to using a simple string split.
  • #4437 (PR) - Support two digit flavors of G0 through G3 in Gcode Viewer and Gcode analysis (so, G00 through G03). Relevant for CNC applications.
  • #4443 (PR) - Software Update: Allow setting the GitHub Personal Access Token (to work around rate limiting issues) via the UI.
  • OctoPrint now requires Python 3.7 or newer. Starting with this release OctoPrint is Python 3 only. See also the heads-up above. Correspondingly also switched all links in the docs and the UI to the Python docs to refer to Python 3 docs instead of Python 2.
  • Added last safe mode date & reason to the system info bundle. This will allow to determine if safe mode was recently launched, and also allow to determine why it was launched.
  • Rephrased system info bundle sharing instructions and removed copy button for short system info text to discourage sharing that instead of the full bundle, which we've sadly seen a ton over the past few months.
  • Removed the webassets cache as it only makes a difference during development, and removing it closes a potential abuse vector.
  • Improved performance of CLI command listings.
  • Instead of silently ignoring a select/print on file upload if the necessary preconditions aren't met, include the effective select/print flags on the upload API and int he triggered UPLOAD event.
  • Application Keys: The plugin now supports a stand-alone authentication dialog which can be accessed via the auth_dialog property returned in response to an app token request. Third party clients can use this lightweight alternative to request an API key on behalf of a user without having to display/load the whole OctoPrint UI.
  • Discovery: Add new config options to ignore interfaces (plugins.discovery.ignoredInterfaces) and limit zeroconf to configured/not ignored interfaces only.
  • Gcode Viewer: Added more progress info during loading process.
  • Plugin Manager: Support .whl uploads as well.
  • Software Update: Improved the update & check buttons. "Update all" will now only update enabled items, "Update all available" (in the new dropdown) will updated enabled and muted items, "Check for updates" does what it always did, "Force check for updates" (dropdown) bypasses the cache, and notification muting and underlying logic is now explained in a footer.
  • Software Update: Put a stronger warning about automatic updates of pip in place.
  • Tracking: Include octopiuptodate_build from PiSupport Plugin, if set. This gives us a better overview on what specific environments to test and develop against.
  • Virtual Printer: Added ability to simulate broken Klipper MCU connection.
  • Translation improvements (PR #4290, PR #4385, PR #4386)
  • Cleaned up code here and there.

🐛 Bug fixes

  • #2243 (PR) - GCode Viewer: Properly display sequentially printed files. Welcome side effect of #4430.
  • #4153 - Fix default ffmpeg commandline (-framerate instead of -r) to ensure ffmpeg generates correct progress reports while rendering a timelapse (PR #4344)
  • #4212 - Fix file selection not properly updating when selecting a file to print from the printer controller.
  • #4238 - Software Update: Fix handling of plugin downgrades on release channel switch.
  • #4240 (PR) - Improve memory footprint of client side terminal by fixing a wrong use of _.map.
  • #4242 - Refocus username input field in the login form on authentication failure (PR #4249)
  • #4260 - Fixed the wrong behaviour that plugins could overwrite plugin templates of other plugins by giving them the same name by making plugin template includes relative and requiring prefixes to address templates of other plugins. See also the associated heads-up for plugin authors above (PR #4281)
  • #4299 - Don't try to enter cancelling state again if already in it.
  • #4316 - Fix timelapse temp folder configuration, which wasn't possible via the UI since 1.5.0.
  • #4321 (PR) - Fixed the offline indicator icon.
  • #4336 (PR) - Don't treat paused state as "ready to print" on APIs.
  • #4349 (PR) - Fix some issues where the timelapse documentation didn't match the implementation (by fixing the docs).
  • #4362 - Fix parsing of version numbers, no longer truncates version after first -.
  • #4363 - Plugin Manager & Software Update: Fix "already installed" detection for newer versions of pip.
  • #4365 - Fix failing timelapse snapshots if the printed file contains a %. (PR #4366)
  • #4367 - Fix error message displayed when attempting to upload a file that is already printed, now properly reflects the issue at hand.
  • #4380 - Fix connectivity check against IPV6 targets. OctoPrint will now first try to reach the host via IPV6 (if enabled), if that fails, fall back to IPV4, and only if that fails too report a connection failure.
  • #4392 - Fix an encoding bug in the clean_ansi helper used for cleaning pip output. Issue caused plugin installation/deinstallation/updates, OctoPrint updates and backups to fail against pip 22+ due to an introduction of a UTF-8 separator line in that.
  • #4396 - Fix colors of standard (logging) output on command line to be better suited for light backgrounds. (PR #4402)
  • #4404 (PR) - Fix less build under less v4
  • #4417 - Fix a faulty regex that caused custom events with uppercase identifiers to generated events names with a double _.
  • #4433 (PR) - Don't load Font Awesome twice.
  • #4439 (PR) - Software Update: Use the correct ignore_throttled setting.
  • #4449 (PR) - Gcode Viewer: Only clear state on event when idle.
  • Fix parsing of firmware capability lines containing the string NAME: getting matched by the M115 response parser instead of the capability parser, by moving the capability parser before the M115 response parser.
  • Fix firmware info inclusion in systeminfo.txt of system info bundle.
  • Improved error resilience in hook processing. Hooks running into errors could prevent commands to be sent to the printer altogether, which has now been rectified.
  • Got rid of a deprecation warning in the plugin sub system by refactoring some code.
  • Clear position recording flag in communication layer on cancel/pause preparation timeout.
  • Reset position data in communication layer on cancel/pause preparation.

🎉 Special thanks to all the contributors!

Special thanks to everyone who contributed to this RC, especially to @adamwolf, @ademuri, @cp2004, @crysxd, @DShenkle, @flaviut, @gdombiak, @GonzoDMX, @jneilliii, @johnboiles, @JoveToo, @kantlivelong, @kohend, @LazeMSS, @MartijnBraam, @NilsRo, @OllisGit, @pR0Ps, @QuinnDamerell, @rooterkyberian@Rotzbua, @surdu, @synman, @The-EG, @thelastWallE, @TylonHH and @vector76 for their PRs!

🔗 More information

- Python
Published by foosel almost 4 years ago

octoprint - 1.7.3

This is a bugfix release for 1.7.x.

The heads-ups from 1.7.0 still apply, please read this release's release notes as well for a full picture of what you should be aware of and what changed!

Issues while updating?

On every new OctoPrint release we see some people run into the same issues with outdated or broken environments all over again. If you encounter a problem during update, please check this collection of the most common issues encountered over the past couple of release cycles first, and test if the included fixes solve your problem.

Bug fixes

Special thanks to all the contributors!

Special thanks to everyone who contributed to this bugfix release, especially @kantlivelong for his PR!

More information

  • Commits
  • As this is a bugfix release, there were no release candidates

- Python
Published by foosel about 4 years ago

octoprint - 1.7.2

This is a bugfix release for 1.7.x.

The heads-ups from 1.7.0 still apply, please read this release's release notes as well for a full picture of what you should be aware of and what changed!

Issues while updating?

On every new OctoPrint release we see some people run into the same issues with outdated or broken environments all over again. If you encounter a problem during update, please check this collection of the most common issues encountered over the past couple of release cycles first, and test if the included fixes solve your problem.

Bug fixes

  • #4293 - Fix double quoting of the resource ref on the files API. This was causing issues with the Cura plugin and other third party API clients.

Special thanks to all the contributors!

Special thanks to everyone who contributed to this bugfix release!

More information

  • Commits
  • As this is a bugfix release, there were no release candidates

- Python
Published by foosel over 4 years ago

octoprint - 1.7.1

This is a bugfix release for 1.7.x.

The heads-ups from 1.7.0 still apply, please read this release's release notes as well for a full picture of what you should be aware of and what changed!

Issues while updating?

On every new OctoPrint release we see some people run into the same issues with outdated or broken environments all over again. If you encounter a problem during update, please check this collection of the most common issues encountered over the past couple of release cycles first, and test if the included fixes solve your problem.

Bug fixes

  • #4267 - Properly escape names of uploaded files and timelapses containing a #. Not doing so would make such files unmanageable through the core UI.
  • #4273 (PR) - Plugin Manager: Fix a wrong sorting selected in the list of installed plugins and the list of plugins on the repository.
  • #4292 - Set requesting of low latency mode on the serial connection to disabled by default, as there's a small number of users for which this causes issues in connecting.

Special thanks to all the contributors!

Special thanks to everyone who contributed to this bugfix release, especially @QuinnDamerell for their PR!

More information

  • Commits
  • As this is a bugfix release, there were no release candidates

- Python
Published by foosel over 4 years ago

octoprint - 1.7.0

Issues while updating?

On every new OctoPrint release we see some people run into the same issues with outdated or broken environments all over again. If you encounter a problem during update, please check this collection of the most common issues encountered over the past couple of release cycles first, and test if the included fixes solve your problem.

Heads-up for anyone still on OctoPi 0.15.0 or 0.15.1

OctoPrint 1.7.0 is the final release that will allow updating through the built in Software Update plugin. The Python environment on OctoPi 0.15.* has now become so ancient that the overhead of keeping on supporting it is no longer sustainable, and the likelihood of spontaneous breakage has increased significantly.

If you are one of the ~5% of users still on OctoPi 0.15, create a backup of your OctoPrint data, flash the latest OctoPi 0.18 to ideally a fresh SD card (they age too...) and restore from backup. That should get you up and running under a current OctoPi release in no time and additionally migrate you to Python 3.

Heads-up for anyone still on Python 2

I'll do my very best to keep OctoPrint functional under Python 2 until the release of OctoPrint 2.0.0, however Python 2.7 has been EOL now for almost two years, a lot of third party libraries are releasing updates for Python 3 only at this point, and many plugin authors for OctoPrint do so as well.

It is time to upgrade, and so OctoPrint 1.7.0 will now show you a pop-up about that fact when you open the UI. You do not have to act, but it is strongly recommended you do if you don't want to be left behind, and the pop-up will also tell you how to update:

image

Please do, the less Python 2 users are out there I still have to support, the more time I have for moving towards 2.0.

Heads-up for plugin authors: octoprint.util.get_free_bytes has been removed

The utility function octoprint.util.get_free_bytes, now deprecated since version 1.2.5 in favor of psutil.disk_usage, has finally been removed. If for any reason you've been using this in your third party plugin, ignoring the deprecation warning OctoPrint has been printing out to the log since 2015, now is the time to finally fix things.

Features & improvements

  • #2888 - New event FilamentChange triggered when commands M600, M701 or M702 are sent to the printer. (PR #4187)
  • #3936 - Software Update: The Software Update plugin will now prompt for an update as the first step during the first run setup wizard, if there's an update available.
  • #4059 - Timelapse: Switched to using -b:v instead of just -b for FFMPEG bitrate specification. Also improved sanity checking of timelapse rendering parameters.
  • #4065 - Software Update: Added an update log with link to the release notes. You will now be able to see the update events of the past 30d right from within the Software Update settings in case you need to debug something. The update log will also be shared into the system info bundle.
  • #4069 - Plugin Manager & Software Update: Added a link to the FAQ if actions are blocked due to undervoltage.
  • #4085 - Improved animation performance across all modals in the UI. (PR #4103, PR #4164)
  • #4098 (PR) - Use G0 for jogging instead of G1.
  • #4099 - Attempt to set low latency mode on the serial port on POSIX systems (e.g. Linux) to improve serial performance. If unsupported should gracefully fall back to former behaviour.
  • #4101 - Mark "G90 influences extruder" as relevant for Marlin 2. (PR #4116)
  • #4105 (PR) - Improved UI performance by getting rid of ResizeSensor and copywidth.
  • #4107 - Added an option to disable the cache busting on the webcam stream URL. (PR #4124)
  • #4111 (PR) - Added an unselect command on the files API.
  • #4114 (PR) - Added the ability to rename files and folders via the move dialog.
  • #4128 (PR) - Added ignored commands. They behave identical to blocked commands in that they are not sent to the printer by OctoPrint, but other than those they do not generate a blocked command event with severity warn but rather just info. The list by default ships as empty.
  • #4131 - Plugin Manager: Improve performance of settings dialog by making better use of caching headers on the plugin repository endpoint. (PR #4132)
  • #4143 - A new hook octoprint.system.additional_commands allows plugin authors to add new entries to the system command menu from their plugins.
  • #4145 (PR) - Backup: Clarified what the various "exclude" options do precisely.
  • #4149 - Removed the artifical upper limit of 10 extruders in the UI.
  • #4157 - Added arc calculation to GCODE analysis. (PR #4159)
  • #4166 - Plugin Manager: OctoPrint will now detect if a plugin install fails due to a Python version mismatch and show a special message with link to an FAQ entry on the matter.
  • #4166 - If still running under Python 2, OctoPrint will now show a notification linking to update instructions to Python 3 on page reload/connection to the backend.
  • #4173 (PR) - Upgraded Tornado to 6.x under Python 3
  • #4193 (PR) - Added a new bundled plugin "Event Manager" for managing event subscriptions via the UI.
  • #4204 - Make the new event manager use the new (faster) CSS only modal fade in animation.
  • Tracking: Added tracking of user agent string via new tracking event webui_load. Slightly different reimplementation of (unmerged) PR #4148.
  • The third party plugin blacklist now supports plugin and python version ranges.
  • Added support for the EXTENDED_M20 firmware capability. If detected, OctoPrint will now send M20 L instead of plain M20 requests to firmwares, to allow immediate fetch of long names. Quoted long names, as apparently sent by some firmwares even though there was never a mention of that during the initial feature discussions, are also supported now.
  • Added support for the AUTOREPORT_POS firmware capability. If detected, OctoPrint will enable position auto reporting on connection.
  • Improved logging of folder configuration issues during startup. That should help in debugging any kind of related problems.
  • Made the system info bundle more visible. Many users are still copy/pasting the textual system info dump and forget to share the bundle. So the request was rephrased to target the bundle and the textual info dump was hidden behind a "More" area. Also, the bundle viewer has been linked.
  • Added a new frontend callback onBeforePrintStart. That can be used to hook into and prevent the start of a print job via click on "Start" in the print state or click on select & print in the file list. Will be used by a new version of the bundled PiSupport plugin to show an additional confirmation when starting a new job while the system is throttled due to undervoltage or overheating.
  • OctoPrint's console output will now be colored based on log severity.
  • Added a new, bundled plugins only, hook octoprint.systeminfo.additional_bundle_files that allows bundled plugins to declare additional files to include in system info bundles. Why only bundled plugins? The goal is to keep bundles small and easy to process, and if every third party plugin can add files to it that would probably change fast.

Bug fixes

  • #4073 - Fixed non deterministic sorting of empty folders in the file list by upload date in Chrome browsers.
  • #4074 - Invalid GCODE analysis results will no longer cause HTTP errors on the files API.
  • #4075 (PR) - Fixed centering of icons in the control tab buttons.
  • #4078 - When running under Python 3, OctoPrint will do its best to keep names of uploaded files as is, without slugification. A config option to enforce the old behaviour (feature.enforceReallyUniversalFilenames) has been added for compatibility reasons. This should solve issues with name collisions due to slugification.
  • #4084 - Enforcing printTimeLeft on the print job information from the API is an int.
  • #4092 - Fixed inaccessible tool dropdown.
  • #4117 - GCODE Viewer: Worked around a Chrome-only rounding issue with short arcs with large radii causing rendering artifacts. If Chrome is detected, the viewer will now fall back on an approximation of the 2D context's arc command, implemented via bezier curves, that doesn't suffer from the same browser bug. This fallback implemented can also be intentionally toggled or untoggled via a new advanced renderer option. See also this blog post.
  • #4122 (PR) - Removed a debug span.
  • #4129 (PR) - Software Update: Fixed a button size inconsistency.
  • #4136 (PR) - Fixed the SameSite=None cookie behaviour.
  • #4135 (PR) - Fixed bedZ setting not being set as a float like it should, leading to wrong config.
  • #4162 - Fixed GCODE files without any extrusion being analysed on each server start.
  • #4175 (PR) - Fixed a bunch of documentation build issues.
  • #4194 - Improved error handling of lacking resend history to further investigate this issue.
  • #4202 (regression) - Fix None handling error in print time estimation during print start.
  • #4203 (regression) - Only try to set low latency mode to True, never to False. Just don't do anything if low latency mode isn't requested.
  • #4207 - Software Update: Fix "Update log" content being visible on the wrong settings tab
  • #4210 (regression) - Fix label placement in progress dialog, as e.g. used by the timelapse bulk delete feature.
  • #4216 (regression) - Announcements: Fix announcements dialog sizing (PR #4217)
  • #4226 (regression) - Set autocapitalize="none" on login fields again. Longer standing regression, fixed in this RC due to minimal impact and side effect potential.
  • #4231 - Plugin Manager: Make sure plugin list export URL is prefixed with the correct base URL.
  • Some wording & typo fixes. (PR #4089, PR #4125, PR #4137)
  • Fixed TEMPLATES_AUTO_RELOAD not being honored and thus templates not auto reloading during development without server restart.
  • Fixed a bug in the calculation of wizards to display.
  • Fixed the ko invisible binding not updating properly.

Special thanks to all the contributors!

Special thanks to everyone who contributed to this RC, especially to @apbarratt, @cp2004, @eltonlaw, @eyal0, @ianwiltdotcom, @jneilliii, @jugmac00, @kantlivelong, @LazeMSS, @ldursw, @oliof, @sparxooo, @StevilKnevil and @TwoRedCells for their PRs!

More information

- Python
Published by foosel over 4 years ago

octoprint - 1.7.0rc3 (release candidate)

⚠️ 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!

Bug fixes

  • #4207 - Software Update: Fix "Update log" content being visible on the wrong settings tab
  • #4210 (regression) - Fix label placement in progress dialog, as e.g. used by the timelapse bulk delete feature.
  • #4216 (regression) - Announcements: Fix announcements dialog sizing (PR #4217)
  • #4226 (regression) - Set autocapitalize="none" on login fields again. Longer standing regression, fixed in this RC due to minimal impact and side effect potential.
  • #4231 - Plugin Manager: Make sure plugin list export URL is prefixed with the correct base URL.

Special thanks to all the contributors!

Special thanks to everyone who contributed to this release candidate and provided full, analyzable bug reports, especially to @cp2004 for his PR!

More information

- Python
Published by foosel over 4 years ago

octoprint - 1.7.0rc2 (release candidate)

⚠️ 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

  • #4204 - Make the new event manager use the new (faster) CSS only modal fade in animation.

Bug fixes

  • #4202 (regression) - Fix None handling error in print time estimation during print start.
  • #4203 (regression) - Only try to set low latency mode to True, never to False. Just don't do anything if low latency mode isn't requested.

Special thanks to all the contributors!

Special thanks to everyone who contributed to this release candidate and provided full, analyzable bug reports!

More information

- Python
Published by foosel over 4 years ago

octoprint - 1.7.0rc1 (release candidate)

⚠️ 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!

Heads-up for plugin authors: octoprint.util.get_free_bytes has been removed

The utility function octoprint.util.get_free_bytes, now deprecated since version 1.2.5 in favor of psutil.disk_usage, has finally been removed. If for any reason you've been using this in your third party plugin, ignoring the deprecation warning OctoPrint has been printing out to the log since 2015, now is the time to finally fix things.

Features & improvements

  • #2888 - New event FilamentChange triggered when commands M600, M701 or M702 are sent to the printer. (PR #4187)
  • #3936 - Software Update: The Software Update plugin will now prompt for an update as the first step during the first run setup wizard, if there's an update available.
  • #4059 - Timelapse: Switched to using -b:v instead of just -b for FFMPEG bitrate specification. Also improved sanity checking of timelapse rendering parameters.
  • #4065 - Software Update: Added an update log with link to the release notes. You will now be able to see the update events of the past 30d right from within the Software Update settings in case you need to debug something. The update log will also be shared into the system info bundle.
  • #4069 - Plugin Manager & Software Update: Added a link to the FAQ if actions are blocked due to undervoltage.
  • #4085 - Improved animation performance across all modals in the UI. (PR #4103, PR #4164)
  • #4098 (PR) - Use G0 for jogging instead of G1.
  • #4099 - Attempt to set low latency mode on the serial port on POSIX systems (e.g. Linux) to improve serial performance. If unsupported should gracefully fall back to former behaviour.
  • #4101 - Mark "G90 influences extruder" as relevant for Marlin 2. (PR #4116)
  • #4105 (PR) - Improved UI performance by getting rid of ResizeSensor and copywidth.
  • #4107 - Added an option to disable the cache busting on the webcam stream URL. (PR #4124)
  • #4111 (PR) - Added an unselect command on the files API.
  • #4114 (PR) - Added the ability to rename files and folders via the move dialog.
  • #4128 (PR) - Added ignored commands. They behave identical to blocked commands in that they are not sent to the printer by OctoPrint, but other than those they do not generate a blocked command event with severity warn but rather just info. The list by default ships as empty.
  • #4131 - Plugin Manager: Improve performance of settings dialog by making better use of caching headers on the plugin repository endpoint. (PR #4132)
  • #4143 - A new hook octoprint.system.additional_commands allows plugin authors to add new entries to the system command menu from their plugins.
  • #4145 (PR) - Backup: Clarified what the various "exclude" options do precisely.
  • #4149 - Removed the artifical upper limit of 10 extruders in the UI.
  • #4157 - Added arc calculation to GCODE analysis. (PR #4159)
  • #4166 - Plugin Manager: OctoPrint will now detect if a plugin install fails due to a Python version mismatch and show a special message with link to an FAQ entry on the matter.
  • #4166 - If still running under Python 2, OctoPrint will now show a notification linking to update instructions to Python 3 on page reload/connection to the backend.
  • #4173 (PR) - Upgraded Tornado to 6.x under Python 3
  • #4193 (PR) - Added a new bundled plugin "Event Manager" for managing event subscriptions via the UI.
  • Tracking: Added tracking of user agent string via new tracking event webui_load. Slightly different reimplementation of (unmerged) PR #4148.
  • The third party plugin blacklist now supports plugin and python version ranges.
  • Added support for the EXTENDED_M20 firmware capability. If detected, OctoPrint will now send M20 L instead of plain M20 requests to firmwares, to allow immediate fetch of long names. Quoted long names, as apparently sent by some firmwares even though there was never a mention of that during the initial feature discussions, are also supported now.
  • Added support for the AUTOREPORT_POS firmware capability. If detected, OctoPrint will enable position auto reporting on connection.
  • Improved logging of folder configuration issues during startup. That should help in debugging any kind of related problems.
  • Made the system info bundle more visible. Many users are still copy/pasting the textual system info dump and forget to share the bundle. So the request was rephrased to target the bundle and the textual info dump was hidden behind a "More" area. Also, the bundle viewer has been linked.
  • Added a new frontend callback onBeforePrintStart. That can be used to hook into and prevent the start of a print job via click on "Start" in the print state or click on select & print in the file list. Will be used by a new version of the bundled PiSupport plugin to show an additional confirmation when starting a new job while the system is throttled due to undervoltage or overheating.
  • OctoPrint's console output will now be colored based on log severity.
  • Added a new, bundled plugins only, hook octoprint.systeminfo.additional_bundle_files that allows bundled plugins to declare additional files to include in system info bundles. Why only bundled plugins? The goal is to keep bundles small and easy to process, and if every third party plugin can add files to it that would probably change fast.

Bug fixes

  • #4073 - Fixed non deterministic sorting of empty folders in the file list by upload date in Chrome browsers.
  • #4074 - Invalid GCODE analysis results will no longer cause HTTP errors on the files API.
  • #4075 (PR) - Fixed centering of icons in the control tab buttons.
  • #4078 - When running under Python 3, OctoPrint will do its best to keep names of uploaded files as is, without slugification. A config option to enforce the old behaviour (feature.enforceReallyUniversalFilenames) has been added for compatibility reasons. This should solve issues with name collisions due to slugification.
  • #4084 - Enforcing printTimeLeft on the print job information from the API is an int.
  • #4092 - Fixed inaccessible tool dropdown.
  • #4117 - GCODE Viewer: Worked around a Chrome-only rounding issue with short arcs with large radii causing rendering artifacts. If Chrome is detected, the viewer will now fall back on an approximation of the 2D context's arc command, implemented via bezier curves, that doesn't suffer from the same browser bug. This fallback implemented can also be intentionally toggled or untoggled via a new advanced renderer option. See also this blog post.
  • #4122 (PR) - Removed a debug span.
  • #4129 (PR) - Software Update: Fixed a button size inconsistency.
  • #4136 (PR) - Fixed the SameSite=None cookie behaviour.
  • #4135 (PR) - Fixed bedZ setting not being set as a float like it should, leading to wrong config.
  • #4162 - Fixed GCODE files without any extrusion being analysed on each server start.
  • #4175 (PR) - Fixed a bunch of documentation build issues.
  • #4194 - Improved error handling of lacking resend history to further investigate this issue.
  • Some wording & typo fixes. (PR #4089, PR #4125, PR #4137)
  • Fixed TEMPLATES_AUTO_RELOAD not being honored and thus templates not auto reloading during development without server restart.
  • Fixed a bug in the calculation of wizards to display.
  • Fixed the ko invisible binding not updating properly.

Special thanks to all the contributors!

Special thanks to everyone who contributed to this RC, especially to @apbarratt, @cp2004, @eltonlaw, @eyal0, @iawiltdotcom, @jneilliii, @jugmac00, @kantlivelong, @LazeMSS, @ldursw, @oliof, @sparxooo, @StevilKnevil and @TwoRedCells for their PRs!

More information

- Python
Published by foosel over 4 years ago

octoprint - 1.6.1

This is a bugfix release to fix two bugs in 1.6.x.

The heads-ups from 1.6.0 still apply, please read this release's release notes as well for a full picture of what you should be aware of and what changed!

Bug fixes

  • #4115 - GCode viewer: Fix dragging when a printer profile with center origin is selected. As a welcome side effect, this now also means the GCode viewer will finally update the bed dimensions properly on printer profile change.
  • #4119 - Fix blocking timeout when requesting an SD file list while printing & prevent an SD list refresh while printing.

Special thanks to all the contributors!

Special thanks to everyone who contributed to this bugfix release!

More information

  • Commits
  • As this is a bugfix release, there were no release candidates

- Python
Published by foosel almost 5 years ago

octoprint - 1.6.0

Heads-up for plugin authors: Support for the plugin control properties __plugin_init__ and __plugin_implementations__ (plural!) has been removed

The two plugin control properties __plugin_init__ and __plugin_implementations__ (note the plural!) have been deprecated ever since OctoPrint 1.2.0 and have finally been removed.

It is highly unlikely that your plugin has ever used them given that they were already marked as deprecated for the very first version of OctoPrint to ever even support plugins. Still, just in the case of anyone out there making use of them regardless, here's a heads-up that they will no longer be utilized in OctoPrint 1.6+.

Features & improvements

  • #3544 - Timelapse: Bulk downloads of multiple timelapses in one zip archive. See also #3856.
  • #3595 - GCode Viewer: "Center viewport on model" and "Zoom in on model" now take the current layer's bounding box into account, instead of the whole model's. See also #3880.
  • #3711 - Plugin Manager: Button to export the list of installed plugins to a machine readable JSON file. See also #3833.
  • #3746 - Logging: Bulk downloads of multiple logs in one zip archive.
  • #3801 - Get rid of double scrollbars in Plugin Manager and Software Update settings dialogs. See also #3835 and #3836.
  • #3818 - Backup: Base the backup name on the configured instance name.
  • #3819 - File search now searches through both internal and displayed file name.
  • #3828 - Separate error messages from connection state on Printer Status and Job API by introducing a new error field next to state.
  • #3830 - Reword the warning about using the global API key.
  • #3835 - PMGR: Improve UX by moving notices to a collapsible "info" section at the top of the window, moving the Get More button to the top bar, fixing the top bar when scrolled and highlighting available notices with red icon & text and an auto-show if needed.
  • #3836 - SWU: Improve UX by moving check for updates & update all buttons to the top of the interface & moving advanced options to a collapsed section at the top of the interface.
  • #3840 - Add an indicator to the frontend if OctoPrint detects it can't connect to the internet.
  • #3866 - Backup: Add plugin helpers create_backup and delete_backup.
  • #3873 - A new file name collision dialog is now triggered on upload if the uploaded file is detected as already existing on the server. The dialog allows to cancel the upload, rename the file or forcefully overwrite the file already on disk. This confirmation dialog can be disabled via Settings > Features to restore the old behaviour (overwrite without asking).
  • #3882 - For determining pip behaviour and Python environment, capture testballoon output from the pip call's stdout/stderr instead of a temporary file.
  • #3885 - Support permission objects as keys to SettingsPlugin.get_settings_restricted_paths, instead of just user, admin, never. This allows plugin authors to more granular control on which settings get presented to what user types.
  • #3895 - Ensure connectivity check wizard comes before usage tracking wizard. See also #3918.
  • #3903 - Add two new events GcodeScript${ScriptName}Running and GcodeScript${ScriptName}Finished that will be triggered when gcode scripts are run.
  • #3919 - systemd: Change service type in bundled unit file to exec
  • #3920 - Add an ES5 polyfill to improve compatibility of third party plugins on really old browsers.
  • #3924 - Tracking: Allow to change your decision made in the wizard before submitting it.
  • #3925 - Announcement: Set default state to avoid pop-in
  • #3925 - Action Command Prompt: Fix icon
  • #3942 - Blacklist: Allow to change your decision made in the wizard before submitting it.
  • #3943 - Connectivity check: Allow to change your decision made in the wizard before submitting it.
  • #3944 - Add frontend callback onUserSettingsBeforeSave that gets called on core components and registered plugin view models when user settings are saved.
  • #3946 - Ensure validity of IP address ranges configured for autologin and refuse to use invalid ones.
  • #3947 - Logging: Automatically add logger on selection. See also #3957.
  • #3950 - Logging: Start new config with empty logger. See also #3951.
  • #3952 - Logging: Save logging settings only when there actually were changes. See also #3953 and #3949.
  • #3958 - Include slicing.defaultSlicer on the settings API.
  • #3963 - Improve error message during server startup if a Python bug with non-ASCII host names gets encountered.
  • #3966 - Add IDs and classes to terminal panels and buttons, to allow easier targeting from third party plugins.
  • #3972 - Timelapse: the used ffmpeg command line can now be configured in detail
  • #3978 - Remove redundant Python 2 float conversion relics.
  • #3984 - Add a hook octoprint.printer.handle_connect for plugins to prevent a connect from going through.
  • #3987 - Enforce scrollbars to be visible on Safari
  • #3993 - Backup: Add warning for backups that are too big to restore via upload.
  • #4017 - GCode Viewer: New option to make the viewer ignore all commands until a certain line in the file is found. This can be used to ignore priming lines.
  • #4024 - SWU: Improve error reporting in case of detected undervoltage/overheating.
  • #4031 - PMGR: Change default sorting of repository view from "name" to "popularity".
  • #4035 - PMGR: The API endpoint api/plugin/pluginmanager has been deprecated and split into plugin/pluginmanager/plugins, plugin/pluginmanager/orphans and plugin/pluginmanager/repository. There's also now plugin/pluginmanager/<key> to retrieve information for a specific plugin by its identifier.
  • #4049 - Improve consistency in the settings headers.
  • #4050 - Default temperature regex of terminal filters now also recognizes C, P, R and L values as support by Marlin, as well as negative values.
  • #4050 - Docs: pip install command should use quoted source for maximum compatibility with people's dev environments.
  • #4080 (regression) - Fix horizontal scrollbar size in Safari and get rid of horizontal scrolling in notifications altogether.
  • #4082 (regression) - Fix SD card printing
  • #4102 - Add option to revert back to former behaviour of always lower casing SD Card file names reported by the firmware to work around a bug in Prusa Firmware (prusa3d/Prusa-Firmware#3115). Auto detect Prusa Firmware and automatically enable this option if firmware autodetection is enabled. See also #3994 for reference.
  • New --overlay command line flag to defined additional config overlays to apply to OctoPrint's defaults before loading config.yaml. This will allow preconfiguration by distributions without the risk to bundle environment specific presets in backups that might then no longer fit presets required on later versions (as seen in #3821).
  • OctoPrint now provides a downloadable SystemInfo bundle that contains system information, octoprint.log, serial.log, plugin_pluginmanager_console.log and plugin_softwareupdate_console.log. A bundle viewer allows easy viewing of bundles. SystemBundles are going to become mandatory for bug reports and you can also expect them to be requested from you when seeking support on the forums or the Discord server. It can be acquired through OctoPrint's About dialog, the recovery page and the command line (via octoprint systeminfo <directory>).
  • New action commands supported: sd_inserted, sd_ejected, sd_updated. May be used by firmware to explicitly inform OctoPrint about SD card changes.
  • Only import plugins if their metadata contains any control property. This is to protect against loading things from the plugin folders that aren't even plugins, like errant setup.py files.
  • Remove deprecated plugin control properties __plugin_init__ and __plugin_implementations__ (plural!)
  • Remove support for plugins only provided as pyc files, as that would not work with our pre-load validation and never was officially supported anyhow.
  • Add min/max properties to octoprint.util.CountedEvent.
  • Make size of last line buffer in comm layer configurable via serial.lastLineBufferSize.
  • Protect against null scripts sent by clients.
  • Connectivity check: Default to 1.1.1.1 for online check. Less controversial than 8.8.8.8.
  • Make the tornado.access log less verbose for /api/printer. 409 returns on this endpoint are common if the printer is not currently connected. Reduce log spam by rewriting such requests to INFO level, which by default won't get logged.
  • Clarify in the UI that OctoPrint does not control the webcam.
  • All JSON and YAML will now be dumped with 2 space indentation.
  • Don't return input params in error messages on the API as that might open up clients that don't escape errors to XSS.
  • Fail fast on invalid file names requested on the files API.
  • Use flask.abort where it makes sense.
  • Default to JSON errors on all API endpoints including blueprints.
  • octoprint.util.time_this decorator can now also log on entering the decorated function.
  • Performance improvements on the files API.
  • Ignore SD card messages from the firmware if SD support is disabled in OctoPrint.
  • Backup: Allow restore of backups from newer patch versions. E.g. it will now be possible to restore a backup from 1.6.1 under 1.6.0, but still not possible to restore a backup from 1.7.x under 1.6.x.
  • GCode Viewer: Improve identifiers in settings dialog.
  • Logging: Don't manage anything but *.log files.
  • PiSupport: Extracted into its own project at OctoPrint/OctoPrint-PiSupport on its own release cycle. Required by OctoPrint and still considered bundled.
  • Tracking: Add printer state to ping event. That will allow us to get a general idea of actively used vs idle instances. A huge number of instances in an error state could also be an indicator of problems with a release.
  • SWU: Additional check overlay for Python 2 instances. This will allow to disable software update for future Py3 plugins, or redefine update URLs and the like for plugins to allow for security updates or similar from an alternative repository. See this post on the community forums for details.
  • Update the bundled modernizr.
  • Update the FirmwareCheck dependency to 2021.2.4
  • Remove unused rsa dependency (was slated for removal with 1.4.0 already and just got forgotten).
  • Add ESLint and pyupgrade to pre-commit checks.
  • Some refactoring here and there

Bug fixes

  • #3808 - Fix wrong CSS class on footer. See also #3848.
  • #3829 - Virtual printer: Fix whitespace issue reporting M145 material heatup on M501/M503.
  • #3845 - Fix default regex supplied when adding a new terminal filter. See also #3913.
  • #3865 - Make sure resend ratio setting is an integer.
  • #3869 - Fix config CLI, specifically for setting plugins.softwareupdate.credentials.github.
  • #3875 - Validate JSON with additional state data from plugins, to protect against broken plugins causing a disruption on the push socket due to invalid data. See also #3878.
  • #3883 - Backup: Fix plugin installation when restoring from the CLI
  • #3887 - Fix caching for custom UIPlugins. See also #3888.
  • #3892 - SWU: Fix localPipCommand usage
  • #3905 - Fix recovery from fancy terminal disabling due to slow processing.
  • #3916 - Fix firmware info splitting for firmware which includes datetimes in its report.
  • #3920 - Remove some ES5 incompatible code parts to improve compatibility with really old browsers.
  • #3930 - Fix lines like M150 W40 R20 G20 B20 to be interpreted wrong by the GCODE analysis and lead to invalid analysis results.
  • #3938 - Login UI: Ignore (expected) disconnect on page reload to get rid of scary "server is offline" message.
  • #3941 - Tracking: Fix a typo in the wizard
  • #3948 - Logging: Reload logging settings from the backend on Settings open. That way we will no longer show outdated/cancelled modifications. See also #3949.
  • #3954 - Logging: Prevent adding the same logging config twice. See also #3956.
  • #3994 - Fix lower casing of file names on the printer's SD. Apparently at least some firmware variants are case-sensitive, so err on the side of caution.
  • #3997 - Fix invalid HTML for video embed.
  • #4007 - Don't minify already minified files via webassets.
  • #4014 - Fix a small CSS bug that causes havoc with reskinning.
  • #4015 - GCode Viewer: Fix a typo causing the centerViewport setting to not be persisted properly.
  • #4030 - Fix a deprecation warning on reloading non-conflicting changes in the UI.
  • #4034 - Virtual Printer: Fix handling of parameterless M117
  • #4036 - Assume a start z of 0 in analysis and GCODE viewer to calculate a correct model height even for GCODE that foregoes homing.
  • #4043 - Make sure to import ABC from collections.abc for Python 3.10 compatibility.
  • #4051 - Fix caching behaviour on files API for SD card files. A force refresh will now also trigger a refresh of the SD card file list from the printer.
  • #4080 (regression) - Fix horizontal scrollbar size in Safari and get rid of horizontal scrolling in notifications altogether.
  • #4082 (regression) - Fix SD card printing
  • #4086 (regression) - GCode viewer: Fix visualization of models containing arcs, with "Center viewport on model" and "Zoom in on model" selected.
  • Use immutabledict instead of frozendict on Python 3 as the former is no longer maintained and incompatible to Python 3.10.
  • Action Command Notification: Fix local storage identifier.
  • PMGR: Make upload install async and fix conflict handling.
  • Some fixed typos here and there

Special thanks to all the contributors!

Special thanks to everyone who contributed to this RC, especially to @costas-basdekis, @cp2004, @drifkind, @eumiro, @eyal0, @j7126, @jasonbcox, @jneilliii, @kantlivelong, @LazeMSS, @martellaj, @Master92, @MichaIng, @shadycuz, @Sophist-UK, @thinkyhead and @tirkarthi for their PRs!

More information

- Python
Published by foosel almost 5 years ago

octoprint - 1.6.0rc3 (release candidate)

⚠️ 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

  • #4102 - Add option to revert back to former behaviour of always lower casing SD Card file names reported by the firmware to work around a bug in Prusa Firmware (prusa3d/Prusa-Firmware#3115). Auto detect Prusa Firmware and automatically enable this option if firmware autodetection is enabled. See also #3994 for reference.

Bug fixes

  • #4086 (regression) - GCode viewer: Fix visualization of models containing arcs, with "Center viewport on model" and "Zoom in on model" selected.

Special thanks to all the contributors!

Special thanks to everyone who contributed to this release candidate and provided full, analyzable bug reports!

More information

- Python
Published by foosel almost 5 years ago

octoprint - 1.6.0rc2 (release candidate)

⚠️ 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

  • #4071 - Better change of plugin manager styling that has better compatibility with some third party plugins.
  • GCODE viewer: Option to render a layer specific bounding box, to help with further analysis of #4086.
  • GCODE viewer: Option to render line segment starts, to help with further analysis of #4086.
  • GCODE Analysis: New command line option --layers will also calculate and output layer stats. Recognizes zhop. To help with further analysis of #4086.

Bug fixes

  • #4080 (regression) - Fix horizontal scrollbar size in Safari and get rid of horizontal scrolling in notifications altogether.
  • #4082 (regression) - Fix SD card printing

Special thanks to all the contributors!

Special thanks to everyone who contributed to this release candidate and provided full, analyzable bug reports, and especially to @cp2004 and @LazeMSS for their joint PR!

More information

- Python
Published by foosel almost 5 years ago

octoprint - 1.6.0rc1 (release candidate)

⚠️ 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!

Heads-up for plugin authors: Support for the plugin control properties __plugin_init__ and __plugin_implementations__ (plural!) has been removed

The two plugin control properties __plugin_init__ and __plugin_implementations__ (note the plural!) have been deprecated ever since OctoPrint 1.2.0 and have finally been removed.

It is highly unlikely that your plugin has ever used them given that they were already marked as deprecated for the very first version of OctoPrint to ever even support plugins. Still, just in the case of anyone out there making use of them regardless, here's a heads-up that they will no longer be utilized in OctoPrint 1.6+.

Features & improvements

  • #3544 - Timelapse: Bulk downloads of multiple timelapses in one zip archive. See also #3856.
  • #3595 - GCode Viewer: "Center viewport on model" and "Zoom in on model" now take the current layer's bounding box into account, instead of the whole model's. See also #3880.
  • #3711 - Plugin Manager: Button to export the list of installed plugins to a machine readable JSON file. See also #3833.
  • #3746 - Logging: Bulk downloads of multiple logs in one zip archive.
  • #3801 - Get rid of double scrollbars in Plugin Manager and Software Update settings dialogs. See also #3835 and #3836.
  • #3818 - Backup: Base the backup name on the configured instance name.
  • #3819 - File search now searches through both internal and displayed file name.
  • #3828 - Separate error messages from connection state on Printer Status and Job API by introducing a new error field next to state.
  • #3830 - Reword the warning about using the global API key.
  • #3835 - PMGR: Improve UX by moving notices to a collapsible "info" section at the top of the window, moving the Get More button to the top bar, fixing the top bar when scrolled and highlighting available notices with red icon & text and an auto-show if needed.
  • #3836 - SWU: Improve UX by moving check for updates & update all buttons to the top of the interface & moving advanced options to a collapsed section at the top of the interface.
  • #3840 - Add an indicator to the frontend if OctoPrint detects it can't connect to the internet.
  • #3866 - Backup: Add plugin helpers create_backup and delete_backup.
  • #3873 - A new file name collision dialog is now triggered on upload if the uploaded file is detected as already existing on the server. The dialog allows to cancel the upload, rename the file or forcefully overwrite the file already on disk. This confirmation dialog can be disabled via Settings > Features to restore the old behaviour (overwrite without asking).
  • #3882 - For determining pip behaviour and Python environment, capture testballoon output from the pip call's stdout/stderr instead of a temporary file.
  • #3885 - Support permission objects as keys to SettingsPlugin.get_settings_restricted_paths, instead of just user, admin, never. This allows plugin authors to more granular control on which settings get presented to what user types.
  • #3895 - Ensure connectivity check wizard comes before usage tracking wizard. See also #3918.
  • #3903 - Add two new events GcodeScript${ScriptName}Running and GcodeScript${ScriptName}Finished that will be triggered when gcode scripts are run.
  • #3919 - systemd: Change service type in bundled unit file to exec
  • #3920 - Add an ES5 polyfill to improve compatibility of third party plugins on really old browsers.
  • #3924 - Tracking: Allow to change your decision made in the wizard before submitting it.
  • #3925 - Announcement: Set default state to avoid pop-in
  • #3925 - Action Command Prompt: Fix icon
  • #3942 - Blacklist: Allow to change your decision made in the wizard before submitting it.
  • #3943 - Connectivity check: Allow to change your decision made in the wizard before submitting it.
  • #3944 - Add frontend callback onUserSettingsBeforeSave that gets called on core components and registered plugin view models when user settings are saved.
  • #3946 - Ensure validity of IP address ranges configured for autologin and refuse to use invalid ones.
  • #3947 - Logging: Automatically add logger on selection. See also #3957.
  • #3950 - Logging: Start new config with empty logger. See also #3951.
  • #3952 - Logging: Save logging settings only when there actually were changes. See also #3953 and #3949.
  • #3958 - Include slicing.defaultSlicer on the settings API.
  • #3963 - Improve error message during server startup if a Python bug with non-ASCII host names gets encountered.
  • #3966 - Add IDs and classes to terminal panels and buttons, to allow easier targeting from third party plugins.
  • #3972 - Timelapse: the used ffmpeg command line can now be configured in detail
  • #3978 - Remove redundant Python 2 float conversion relics.
  • #3984 - Add a hook octoprint.printer.handle_connect for plugins to prevent a connect from going through.
  • #3987 - Enforce scrollbars to be visible on Safari
  • #3993 - Backup: Add warning for backups that are too big to restore via upload.
  • #4017 - GCode Viewer: New option to make the viewer ignore all commands until a certain line in the file is found. This can be used to ignore priming lines.
  • #4024 - SWU: Improve error reporting in case of detected undervoltage/overheating.
  • #4031 - PMGR: Change default sorting of repository view from "name" to "popularity".
  • #4035 - PMGR: The API endpoint api/plugin/pluginmanager has been deprecated and split into plugin/pluginmanager/plugins, plugin/pluginmanager/orphans and plugin/pluginmanager/repository. There's also now plugin/pluginmanager/<key> to retrieve information for a specific plugin by its identifier.
  • #4049 - Improve consistency in the settings headers.
  • #4050 - Default temperature regex of terminal filters now also recognizes C, P, R and L values as support by Marlin, as well as negative values.
  • #4050 - Docs: pip install command should use quoted source for maximum compatibility with people's dev environments.
  • New --overlay command line flag to defined additional config overlays to apply to OctoPrint's defaults before loading config.yaml. This will allow preconfiguration by distributions without the risk to bundle environment specific presets in backups that might then no longer fit presets required on later versions (as seen in #3821).
  • OctoPrint now provides a downloadable SystemInfo bundle that contains system information, octoprint.log, serial.log, plugin_pluginmanager_console.log and plugin_softwareupdate_console.log. A bundle viewer allows easy viewing of bundles. SystemBundles are going to become mandatory for bug reports and you can also expect them to be requested from you when seeking support on the forums or the Discord server. It can be acquired through OctoPrint's About dialog, the recovery page and the command line (via octoprint systeminfo <directory>).
  • New action commands supported: sd_inserted, sd_ejected, sd_updated. May be used by firmware to explicitly inform OctoPrint about SD card changes.
  • Only import plugins if their metadata contains any control property. This is to protect against loading things from the plugin folders that aren't even plugins, like errant setup.py files.
  • Remove deprecated plugin control properties __plugin_init__ and __plugin_implementations__ (plural!)
  • Remove support for plugins only provided as pyc files, as that would not work with our pre-load validation and never was officially supported anyhow.
  • Add min/max properties to octoprint.util.CountedEvent.
  • Make size of last line buffer in comm layer configurable via serial.lastLineBufferSize.
  • Protect against null scripts sent by clients.
  • Connectivity check: Default to 1.1.1.1 for online check. Less controversial than 8.8.8.8.
  • Make the tornado.access log less verbose for /api/printer. 409 returns on this endpoint are common if the printer is not currently connected. Reduce log spam by rewriting such requests to INFO level, which by default won't get logged.
  • Clarify in the UI that OctoPrint does not control the webcam.
  • All JSON and YAML will now be dumped with 2 space indentation.
  • Don't return input params in error messages on the API as that might open up clients that don't escape errors to XSS.
  • Fail fast on invalid file names requested on the files API.
  • Use flask.abort where it makes sense.
  • Default to JSON errors on all API endpoints including blueprints.
  • octoprint.util.time_this decorator can now also log on entering the decorated function.
  • Performance improvements on the files API.
  • Ignore SD card messages from the firmware if SD support is disabled in OctoPrint.
  • Backup: Allow restore of backups from newer patch versions. E.g. it will now be possible to restore a backup from 1.6.1 under 1.6.0, but still not possible to restore a backup from 1.7.x under 1.6.x.
  • GCode Viewer: Improve identifiers in settings dialog.
  • Logging: Don't manage anything but *.log files.
  • PiSupport: Extracted into its own project at OctoPrint/OctoPrint-PiSupport on its own release cycle. Required by OctoPrint and still considered bundled.
  • Tracking: Add printer state to ping event. That will allow us to get a general idea of actively used vs idle instances. A huge number of instances in an error state could also be an indicator of problems with a release.
  • SWU: Additional check overlay for Python 2 instances. This will allow to disable software update for future Py3 plugins, or redefine update URLs and the like for plugins to allow for security updates or similar from an alternative repository. See this post on the community forums for details.
  • Update the bundled modernizr.
  • Update the FirmwareCheck dependency to 2021.2.4
  • Remove unused rsa dependency (was slated for removal with 1.4.0 already and just got forgotten).
  • Add ESLint and pyupgrade to pre-commit checks.
  • Some refactoring here and there

Bug fixes

  • #3808 - Fix wrong CSS class on footer. See also #3848.
  • #3829 - Virtual printer: Fix whitespace issue reporting M145 material heatup on M501/M503.
  • #3845 - Fix default regex supplied when adding a new terminal filter. See also #3913.
  • #3865 - Make sure resend ratio setting is an integer.
  • #3869 - Fix config CLI, specifically for setting plugins.softwareupdate.credentials.github.
  • #3875 - Validate JSON with additional state data from plugins, to protect against broken plugins causing a disruption on the push socket due to invalid data. See also #3878.
  • #3883 - Backup: Fix plugin installation when restoring from the CLI
  • #3887 - Fix caching for custom UIPlugins. See also #3888.
  • #3892 - SWU: Fix localPipCommand usage
  • #3905 - Fix recovery from fancy terminal disabling due to slow processing.
  • #3916 - Fix firmware info splitting for firmware which includes datetimes in its report.
  • #3920 - Remove some ES5 incompatible code parts to improve compatibility with really old browsers.
  • #3930 - Fix lines like M150 W40 R20 G20 B20 to be interpreted wrong by the GCODE analysis and lead to invalid analysis results.
  • #3938 - Login UI: Ignore (expected) disconnect on page reload to get rid of scary "server is offline" message.
  • #3941 - Tracking: Fix a typo in the wizard
  • #3948 - Logging: Reload logging settings from the backend on Settings open. That way we will no longer show outdated/cancelled modifications. See also #3949.
  • #3954 - Logging: Prevent adding the same logging config twice. See also #3956.
  • #3994 - Fix lower casing of file names on the printer's SD. Apparently at least some firmware variants are case-sensitive, so err on the side of caution.
  • #3997 - Fix invalid HTML for video embed.
  • #4007 - Don't minify already minified files via webassets.
  • #4014 - Fix a small CSS bug that causes havoc with reskinning.
  • #4015 - GCode Viewer: Fix a typo causing the centerViewport setting to not be persisted properly.
  • #4030 - Fix a deprecation warning on reloading non-conflicting changes in the UI.
  • #4034 - Virtual Printer: Fix handling of parameterless M117
  • #4036 - Assume a start z of 0 in analysis and GCODE viewer to calculate a correct model height even for GCODE that foregoes homing.
  • #4043 - Make sure to import ABC from collections.abc for Python 3.10 compatibility.
  • #4051 - Fix caching behaviour on files API for SD card files. A force refresh will now also trigger a refresh of the SD card file list from the printer.
  • Use immutabledict instead of frozendict on Python 3 as the former is no longer maintained and incompatible to Python 3.10.
  • Action Command Notification: Fix local storage identifier.
  • PMGR: Make upload install async and fix conflict handling.
  • Some fixed typos here and there

Special thanks to all the contributors!

Special thanks to everyone who contributed to this RC, especially to @costas-basdekis, @cp2004, @drifkind, @eumiro, @eyal0, @j7126, @jasonbcox, @jneilliii, @kantlivelong, @LazeMSS, @martellaj, @Master92, @MichaIng, @shadycuz, @Sophist-UK, @thinkyhead and @tirkarthi for their PRs!

More information

- Python
Published by foosel almost 5 years ago

octoprint - 1.5.3

This is a bugfix release to fix two bugs in 1.5.x which seem to cause a noticeable amount of support overhead.

The heads-ups from 1.5.0 still apply, please read this release's release notes as well for a full picture of what you should be aware of and what changed!

Bug fixes

  • #3849 - Fix plugin install errors (e.g. due to undervoltage) not being properly reported to the client.
  • #3886 - Fix handling of 404 errors upon plugin install

Special thanks to all the contributors!

Special thanks to everyone who contributed to this bugfix release, especially @cp2004 and @kantlivelong for their PRs!

More information

  • Commits
  • As this is a bugfix release, there were no release candidates

- Python
Published by foosel about 5 years ago

octoprint - 1.5.2 (stable release)

This is a hotfix release to fix a bug in 1.5.x that sadly only was reported after release of 1.5.1, and to work around a backwards incompatible update of a third party dependency.

The heads-ups from 1.5.0 still apply, please read this release's release notes as well for a full picture of what you should be aware of and what changed!

Bug fixes

  • #3855 & #3867 - Fix settings merging on the frontend causing issues with array values.
  • Pin watchdog dependency to 0.10.4 to work around backwards incompatibility with the just release 0.10.5 under Python 3.

Special thanks to all the contributors!

Special thanks to everyone who contributed to this hotfix release!

More information

  • Commits
  • As this is a hotfix release, there were no release candidates

- Python
Published by foosel about 5 years ago

octoprint - 1.5.1 (stable release)

This is a hotfix release to fix two bugs in 1.5.0 that sadly only were reported after the release candidate phase for 1.5.0.

The heads-ups from 1.5.0 still apply, please read this release's release notes as well for a full picture of what you should be aware of and what changed!

Bug fixes

  • #3844 - Fix api/files/<origin>/<path> not returning children for folders
  • #3852 - Fix service discovery messing with hostname resolution. Still unclear on how that even happens and unable to reproduce, but at least simply completely ignoring loopback devices seems to do the trick.

Special thanks to all the contributors!

Special thanks to everyone who contributed to this hotfix release, especially to @Spybyte for helping to debug!

More information

  • Commits
  • As this is a hotfix release, there were no release candidates

- Python
Published by foosel about 5 years ago

octoprint - 1.5.0

Heads-up: Access Control is now mandatory and no longer can be disabled

If you so far had Access Control disabled, upon upgrading to 1.5.0, OctoPrint will prompt you to create a user name and password for the (first) admin user. This step was sadly necessary as too many people still will happily expose their completely unsecured OctoPrint instance on the public internet, causing additional support overhead from both attacked users and security researchers. See this guide for a way to have OctoPrint log you in automatically when connecting from an internal IP.

Heads-up: Known plugin incompatibilities

The following plugins are confirmed to have issues with OctoPrint 1.5.0, as revealed during the RC phase. Their authors have been informed of this but no fixed version was available at the time of release:

Features & improvements

  • #1600 - Support reading the long filename from M20 if included or adding it from a plugin (e.g. one that utilizes a storm of M33 to fetch all long names). Please note: That's the only way M33 will ever be supported in OctoPrint, as it is utterly the wrong way to go about fetching long names for a list of files of unknown size, so stop asking about it.
  • #2051 - Add a media player for MP4 timelapses. See also #3625.
  • #3502 - Set default timeout for websocket connection to 30s to work around loading time issues observed by some users.
  • #3636 - Option to turn off internal filename display (see also #3783).
  • #3646 - A new recovery page is available now under /recovery, that allows accessing system commands, basic printer control and backup functionality even if the main interface is no longer functional, e.g. due to an errant plugin.
  • #3647 - Support for HLS webcams.
  • #3659 - Enable checksums when manually streaming to the printer as some firmware variants apparently require this.
  • #3664 - Discovery: Remove dependency on the unmaintained and not Python 3 compatible pybonjour for zeroconf support in favor of python-zeroconf. For Python 2, this library has been vendor bundled and patched with some bug fixes only available in later, Python 3 only, releases.
  • #3672 - Warn users if there's a certain amount of resend requests detected, indicating a lot of noise on the line.
  • #3696 - Clarify in Settings dialog that most of the serial settings require a reconnect to the printer to become effective. See also #3703.
  • #3700 - Support non standard pip executable locations in Plugin Manager, Software Update and Backup.
  • #3718 - Printer Notifications: Set a maximum height for the list of notifications.
  • #3719 - Hint mkstemp used in atomic_write to create temporary files in the destination directory. This ensures that the final move operation upon write completion and thus file overwriting stays atomic even if the system wide temporary directory and the destination directory of an atomic_write operation are on different partitions and thus avoids potential race conditions causing file corruption.
  • #3720 - Backup: Allow plugins to flag data managed by them to exclude from backups through a new hook octoprint.plugin.backup.additional_excludes.
  • #3726 - Better resilience against broken analysis queues in third party plugins.
  • #3727 - Add terminal filter for busy protocol. If you have modified your stock terminal filters, you'll have to add this manually, using name "Suppress processing responses" and regex Recv: (echo:\s*)?busy:\s*processing.
  • #3728 - Backup: Added a new event plugin_backup_backup_created that will be triggered on backup creation. Allows third party plugins to perform certain actions on backup creation, e.g. saving them to a cloud provider like GDrive as displayed by the Google Drive Backup plugin.
  • #3733 - Allow to permanently ignore update notifications from individual update checks.
  • #3738 - Clarify currently selected tool cannot be displayed and only show tool selector if the current printer profile has more than one tool configured.
  • #3744 - Discovery: Add unique ID TXT record to zeroconf service.
  • #3745 - Add pyenv local version to .gitignore.
  • #3754 - Detect duplicate configured folder paths, warn the user, refuse to safe them, and as a final line of defense refuse startup if such an invalid configuration is detected.
  • #3756 - Add support for authentication via Authorization: Bearer <apikey> header.
  • #3760 - Make octoprint.util.ResettableTimer set daemon=True by default.
  • #3762 - The whole code base now uses black, prettier, isort, pre-commit and a bunch of custom pre-commit hooks to ensure consistent formatting and enforcement thereof. For anyone doing development, a file containing revs to ignore by git blame is included so this should hopefully not nuke the usefulness of that as long as a current git version is used, set it up via git config blame.ignoreRevsFile .git-blame-ignore-revs.
  • #3766 - Include user name or plugin identifier of who/what started/paused/resumed/cancelled a print job.
  • #3768 - Printer Notifications: Add additional "clear notifications" button to panel header and allow to change sorting order.
  • #3772 - Virtual Printer: Add EEPROM support.
  • #3777 - Software Update: Warning message if a rate limit is preventing a version check to succeed. Also support configuring a GitHub Personal Access Token to be configured via plugins.softwareupdate.credentials.github in config.yaml to increase rate limit restrictions.
  • #3782 - Update FontAwesome to 5.15.1. A compatibility option for backwards compatibility to the former bundled version 4.7.0 is active so that this should not cause issues for third party plugins.
  • #3785 - Update KnockoutJS to 3.5.1
  • #3791 - Discovery: Allow to restrict network interfaces and addresses network discovery will be enabled for.
  • #3804 - Improve handling of corrupt users.yaml file and refuse server start if broken and default file based UserManager is configured.
  • #3811 - Only start tracking resend ratio after a set amount of lines has been transmitted.
  • #3822 - Prevent circumvention of access control through admin subgroups/permissions
  • Don't try to send beforeDisconnect script when not properly connected yet.
  • Default to libx264/mp4 for timelapses.
  • Try up to three times to check for network connectivity before declaring offline state.
  • Add support for the start action command to allow triggering of the active print job from the printer LCD.
  • Add support for removing settings overlays.
  • Add support for settings overlays added by plugins.
  • New hook: octoprint.printer.additional_state_data (see also OctoPrint/plugins.octoprint.org#553).
  • Add socket authentication to the bundled client.
  • Add in_place option for octoprint.util.dict_merge and use where it makes sense to improve performance, idea by @amrsoll
  • Disable logout button in case of login via auth header or API key.
  • New plugin timings logging feature. If enabled (via Settings > Server > Debug options) this will write two new files to the logging dir, plugintimings.log and plugintimings.csv, which contain timing information for each and every hook or implementation call on plugins registered with OctoPrint. This should be helpful to debug any kind of performance issues caused by third party plugins. It should also be a valuable tool to debug performance issues with bundled plugins.
  • New API endpoint /server that returns version and safe mode status.
  • New upload state in the UI, "Refreshing list", the will hopefully allow to debug any further performance issues with file management.
  • Converted code base to use dict and set literals over constructors where applicable. See also #3762.
  • Make Access Control mandatory.
  • Use monospace font for GCODE Scripts editor in the settings.
  • New system information collection page & CLI. Will dump a whole lot of all that environmental data that is required for debugging/support, and can easily be copy/pasted. Once 1.5.0 has been out for a while, a copy of this will become mandatory for bug reports and support tickets on the forums.
  • Add 64bit flag to environmental data.
  • Announcements: Use feedparser >= 6.0.2 under Python 3.
  • Backup: Add config flag restore_unsupported/env var OCTOPRINT_BACKUP_RESTORE_UNSUPPORTED to mark restore as unsupported.
  • Pi Support: The plugin will now prominently display a warning message if OctoPrint is detected as running on a Raspberry Pi Zero/Zero W. This hardware has never been recommended due to severe performance issues that are not just caused by low powered CPU and RAM, contrary to what some sources on the internet might have claimed otherwise.
  • Pi Support: Include throttle state in environmental data.
  • Pi Support: Add support for file flag to enable local debug.
  • Plugin Manager: Support version ranges for plugin notices from plugins.octoprint.org.
  • Software Update: Support release channels for third party plugins.
  • Software Update: Support update check overlay from plugins.octoprint.org.
  • Software Update: Improve pip caller caching behaviour, speed up startup.
  • Tracking: Include 32/64bit info in ping and pong tracking events.
  • Virtual Printer: Implemented M600 with busy wait & prompt.
  • Virtual Printer: Format strings for temperature report to simulate broken temperature formats.
  • Virtual Printer: Support noise simulation on the line.
  • Docs: Added version added info to hooks and API.
  • Docs: More docs for octoprint.plugin.core.*.
  • Various dependency updates.
  • Various refactorings.

Bug fixes

  • #3571 - Set sensible permissions on file uploads and work around restrictive permissions imposed by tempfile.
  • #3649 - Only ever send one line on continue_sending. Otherwise we might spam our send queue, leading to a bunch of lines piling up inside it, making cancelling/pausing take longer and longer.
  • #3658 - Application Keys: Fix typo in API documentation.
  • #3679 - Fix issue causing saving of settings to not work if the serial communication timeout has been modified.
  • #3668 - Plugin Manager: Turn plugin install asynchronous to not run into request timeouts during lengthy installation processes.
  • #3686 - Fix default extrusion length display on the Control tab.
  • #3687 - Fix matching of natively supported action commands to not take potential command parameters into account, like encountered on Marlin's filament runout detection.
  • #3689 - Fix server side handling of SockJS errors, leading to exception spam in Tornado due to unretrieved future exceptions.
  • #3698 - Plugin Manager: Fix plugins provided in gzip no longer being supported. See also #3707.
  • #3699 - Fix M876 not being force-sent while printing
  • #3701 - Plugin Manager: Fix file:// URL generation for plugin installs under Windows
  • #3702 - Application Keys: Fix manual key registration not showing when no keys are yet registered.
  • #3704 - Fix JS error handling to not work when error tracking is disabled. See also #3706.
  • #3705 - Fix watchdog not triggering on file renames in the watched folder, only on creation.
  • #3722 - Backup: Fix issue with restore on some Python 3 setups.
  • #3729 - Plugin Manager: Performance improvements and fixed memory leak in the frontend.
  • #3731 - Fix exception on log download upon file change by switching to chunked encoding.
  • #3740 - Remove default submit from settings forms.
  • #3742 - Fix link to language packs.
  • #3743 - GCODE viewer: Fix layer tooltip location.
  • #3769 - Fix detection of virtual environments on newer versions of virtualenv that do not set sys.real_prefix.
  • #3790 - Plugin Manager: Fix an uncaught TypeError when setting "Force the use of the --user flag with pip install".
  • #3796 - Fix handling of webcam permission, see also #3797.
  • #3805 (regression) - Fix an internal server error on GET /api/files/local/<filename>
  • #3812 (regression) - Backup: Fix an AttributeError on CLI usage
  • #3813 (regression) - Discovery: Fix zeroconf discovery under Python 2
  • #3814 - Fix an error on language pack upload under Python 3; not a regression, but still included due to being minimally invasive (see also #3815)
  • #3825 (regression) - Plugin installation broken under Windows and Python 2.7
  • Don't drop state messages on the socket, even if rate limiting is active. Otherwise we might drop a final switch to Offline and hence still displayed as connected when we are not.
  • Gracefully handle non existing Accept-Encoding header.
  • Treat wss/ws protocol as https/http in websocket origin check, see also this forum post.
  • Double check download folder in octoprint.util.net.download_file.
  • Fix settings overlays, they were not merging the defaults.
  • Make settings remove behave identical to get and set regarding defaults.
  • Protect against a potential deadlock in LocalFileStorage.
  • Prefer collections.abc over collections imports, as the latter will no longer be supported in Python 3.9.
  • Get rid of an unnecessary double load of plugins during server startup.
  • Discovery: Send three SSDP notify messages as defined in the spec, not just one.
  • Software Update: Fix CLI.
  • Various code fixes as pointed out by static analysis tools.

Special thanks to all the contributors!

Special thanks to everyone who contributed to this release, especially to @chudsaviet, @coldtobi, @cp2004, @frenck, @j7126, @jneilliii, @ManuelMcLure, @mjrider, @OllisGit, @shaver, @Sophist-UK and @urish for their PRs!

More information

- Python
Published by foosel about 5 years ago

octoprint - 1.5.0rc3 (release candidate)

⚠️ 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!

Heads-up: Access Control is now mandatory and no longer can be disabled

If you so far had Access Control disabled, upon upgrading to 1.5.0, OctoPrint will prompt you to create a user name and password for the (first) admin user. This step was sadly necessary as too many people still will happily expose their completely unsecured OctoPrint instance on the public internet, causing additional support overhead from both attacked users and security researchers. See this guide for a way to have OctoPrint log you in automatically when connecting from an internal IP.

Bug fixes

  • #3825 (regression) - Plugin installation broken under Windows and Python 2.7

Special thanks to all the contributors!

Special thanks to everyone who contributed to this release candidate and provided full, analyzable bug reports!

More information

- Python
Published by foosel over 5 years ago

octoprint - 1.5.0rc2 (release candidate)

⚠️ 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!

Heads-up: Access Control is now mandatory and no longer can be disabled

If you so far had Access Control disabled, upon upgrading to 1.5.0, OctoPrint will prompt you to create a user name and password for the (first) admin user. This step was sadly necessary as too many people still will happily expose their completely unsecured OctoPrint instance on the public internet, causing additional support overhead from both attacked users and security researchers. See this guide for a way to have OctoPrint log you in automatically when connecting from an internal IP.

Improvements

  • #3804 - Improve handling of corrupt users.yaml file and refuse server start if broken and default file based UserManager is configured.
  • #3811 - Only start tracking resend ratio after a set amount of lines has been transmitted.
  • #3822 - Prevent circumvention of access control through admin subgroups/permissions

Bug fixes

  • #3805 (regression) - Fix an internal server error on GET /api/files/local/<filename>
  • #3812 (regression) - Backup: Fix an AttributeError on CLI usage
  • #3813 (regression) - Discovery: Fix zeroconf discovery under Python 2
  • #3814 - Fix an error on language pack upload under Python 3; not a regression, but still included due to being minimally invasive (see also #3815)

Special thanks to all the contributors!

Special thanks to everyone who contributed to this release candidate and provided full, analyzable bug reports, and especially to @cp2004 for his PR!

More information

- Python
Published by foosel over 5 years ago

octoprint - 1.5.0rc1 (release candidate)

⚠️ 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!

Heads-up: Access Control is now mandatory and no longer can be disabled

If you so far had Access Control disabled, upon upgrading to 1.5.0, OctoPrint will prompt you to create a user name and password for the (first) admin user. This step was sadly necessary as too many people still will happily expose their completely unsecured OctoPrint instance on the public internet, causing additional support overhead from both attacked users and security researchers. See this guide for a way to have OctoPrint log you in automatically when connecting from an internal IP.

Features & improvements

  • #1600 - Support reading the long filename from M20 if included or adding it from a plugin (e.g. one that utilizes a storm of M33 to fetch all long names). Please note: That's the only way M33 will ever be supported in OctoPrint, as it is utterly the wrong way to go about fetching long names for a list of files of unknown size, so stop asking about it.
  • #2051 - Add a media player for MP4 timelapses. See also #3625.
  • #3502 - Set default timeout for websocket connection to 30s to work around loading time issues observed by some users.
  • #3636 - Option to turn off internal filename display (see also #3783).
  • #3646 - A new recovery page is available now under /recovery, that allows accessing system commands, basic printer control and backup functionality even if the main interface is no longer functional, e.g. due to an errant plugin.
  • #3647 - Support for HLS webcams.
  • #3659 - Enable checksums when manually streaming to the printer as some firmware variants apparently require this.
  • #3664 - Discovery: Remove dependency on the unmaintained and not Python 3 compatible pybonjour for zeroconf support in favor of python-zeroconf. For Python 2, this library has been vendor bundled and patched with some bug fixes only available in later, Python 3 only, releases.
  • #3672 - Warn users if there's a certain amount of resend requests detected, indicating a lot of noise on the line.
  • #3696 - Clarify in Settings dialog that most of the serial settings require a reconnect to the printer to become effective. See also #3703.
  • #3700 - Support non standard pip executable locations in Plugin Manager, Software Update and Backup.
  • #3718 - Printer Notifications: Set a maximum height for the list of notifications.
  • #3719 - Hint mkstemp used in atomic_write to create temporary files in the destination directory. This ensures that the final move operation upon write completion and thus file overwriting stays atomic even if the system wide temporary directory and the destination directory of an atomic_write operation are on different partitions and thus avoids potential race conditions causing file corruption.
  • #3720 - Backup: Allow plugins to flag data managed by them to exclude from backups through a new hook octoprint.plugin.backup.additional_excludes.
  • #3726 - Better resilience against broken analysis queues in third party plugins.
  • #3727 - Add terminal filter for busy protocol. If you have modified your stock terminal filters, you'll have to add this manually, using name "Suppress processing responses" and regex Recv: (echo:\s*)?busy:\s*processing.
  • #3728 - Backup: Added a new event plugin_backup_backup_created that will be triggered on backup creation. Allows third party plugins to perform certain actions on backup creation, e.g. saving them to a cloud provider like GDrive as displayed by the Google Drive Backup plugin.
  • #3733 - Allow to permanently ignore update notifications from individual update checks.
  • #3738 - Clarify currently selected tool cannot be displayed and only show tool selector if the current printer profile has more than one tool configured.
  • #3744 - Discovery: Add unique ID TXT record to zeroconf service.
  • #3745 - Add pyenv local version to .gitignore.
  • #3754 - Detect duplicate configured folder paths, warn the user, refuse to safe them, and as a final line of defense refuse startup if such an invalid configuration is detected.
  • #3756 - Add support for authentication via Authorization: Bearer <apikey> header.
  • #3760 - Make octoprint.util.ResettableTimer set daemon=True by default.
  • #3762 - The whole code base now uses black, prettier, isort, pre-commit and a bunch of custom pre-commit hooks to ensure consistent formatting and enforcement thereof. For anyone doing development, a file containing revs to ignore by git blame is included so this should hopefully not nuke the usefulness of that as long as a current git version is used, set it up via git config blame.ignoreRevsFile .git-blame-ignore-revs.
  • #3766 - Include user name or plugin identifier of who/what started/paused/resumed/cancelled a print job.
  • #3768 - Printer Notifications: Add additional "clear notifications" button to panel header and allow to change sorting order.
  • #3772 - Virtual Printer: Add EEPROM support.
  • #3777 - Software Update: Warning message if a rate limit is preventing a version check to succeed. Also support configuring a GitHub Personal Access Token to be configured via plugins.softwareupdate.credentials.github in config.yaml to increase rate limit restrictions.
  • #3782 - Update FontAwesome to 5.15.1. A compatibility option for backwards compatibility to the former bundled version 4.7.0 is active so that this should not cause issues for third party plugins.
  • #3785 - Update KnockoutJS to 3.5.1
  • #3791 - Discovery: Allow to restrict network interfaces and addresses network discovery will be enabled for.
  • Don't try to send beforeDisconnect script when not properly connected yet.
  • Default to libx264/mp4 for timelapses.
  • Try up to three times to check for network connectivity before declaring offline state.
  • Add support for the start action command to allow triggering of the active print job from the printer LCD.
  • Add support for removing settings overlays.
  • Add support for settings overlays added by plugins.
  • New hook: octoprint.printer.additional_state_data (see also OctoPrint/plugins.octoprint.org#553).
  • Add socket authentication to the bundled client.
  • Add in_place option for octoprint.util.dict_merge and use where it makes sense to improve performance, idea by @amrsoll
  • Disable logout button in case of login via auth header or API key.
  • New plugin timings logging feature. If enabled (via Settings > Server > Debug options) this will write two new files to the logging dir, plugintimings.log and plugintimings.csv, which contain timing information for each and every hook or implementation call on plugins registered with OctoPrint. This should be helpful to debug any kind of performance issues caused by third party plugins. It should also be a valuable tool to debug performance issues with bundled plugins.
  • New API endpoint /server that returns version and safe mode status.
  • New upload state in the UI, "Refreshing list", the will hopefully allow to debug any further performance issues with file management.
  • Converted code base to use dict and set literals over constructors where applicable. See also #3762.
  • Make Access Control mandatory.
  • Use monospace font for GCODE Scripts editor in the settings.
  • New system information collection page & CLI. Will dump a whole lot of all that environmental data that is required for debugging/support, and can easily be copy/pasted. Once 1.5.0 has been out for a while, a copy of this will become mandatory for bug reports and support tickets on the forums.
  • Add 64bit flag to environmental data.
  • Announcements: Use feedparser >= 6.0.2 under Python 3.
  • Backup: Add config flag restore_unsupported/env var OCTOPRINT_BACKUP_RESTORE_UNSUPPORTED to mark restore as unsupported.
  • Pi Support: The plugin will now prominently display a warning message if OctoPrint is detected as running on a Raspberry Pi Zero/Zero W. This hardware has never been recommended due to severe performance issues that are not just caused by low powered CPU and RAM, contrary to what some sources on the internet might have claimed otherwise.
  • Pi Support: Include throttle state in environmental data.
  • Pi Support: Add support for file flag to enable local debug.
  • Plugin Manager: Support version ranges for plugin notices from plugins.octoprint.org.
  • Software Update: Support release channels for third party plugins.
  • Software Update: Support update check overlay from plugins.octoprint.org.
  • Software Update: Improve pip caller caching behaviour, speed up startup.
  • Tracking: Include 32/64bit info in ping and pong tracking events.
  • Virtual Printer: Implemented M600 with busy wait & prompt.
  • Virtual Printer: Format strings for temperature report to simulate broken temperature formats.
  • Virtual Printer: Support noise simulation on the line.
  • Docs: Added version added info to hooks and API.
  • Docs: More docs for octoprint.plugin.core.*.
  • Various dependency updates.
  • Various refactorings.

Bug fixes

  • #3571 - Set sensible permissions on file uploads and work around restrictive permissions imposed by tempfile.
  • #3649 - Only ever send one line on continue_sending. Otherwise we might spam our send queue, leading to a bunch of lines piling up inside it, making cancelling/pausing take longer and longer.
  • #3658 - Application Keys: Fix typo in API documentation.
  • #3679 - Fix issue causing saving of settings to not work if the serial communication timeout has been modified.
  • #3668 - Plugin Manager: Turn plugin install asynchronous to not run into request timeouts during lengthy installation processes.
  • #3686 - Fix default extrusion length display on the Control tab.
  • #3687 - Fix matching of natively supported action commands to not take potential command parameters into account, like encountered on Marlin's filament runout detection.
  • #3689 - Fix server side handling of SockJS errors, leading to exception spam in Tornado due to unretrieved future exceptions.
  • #3698 - Plugin Manager: Fix plugins provided in gzip no longer being supported. See also #3707.
  • #3699 - Fix M876 not being force-sent while printing
  • #3701 - Plugin Manager: Fix file:// URL generation for plugin installs under Windows
  • #3702 - Application Keys: Fix manual key registration not showing when no keys are yet registered.
  • #3704 - Fix JS error handling to not work when error tracking is disabled. See also #3706.
  • #3705 - Fix watchdog not triggering on file renames in the watched folder, only on creation.
  • #3722 - Backup: Fix issue with restore on some Python 3 setups.
  • #3729 - Plugin Manager: Performance improvements and fixed memory leak in the frontend.
  • #3731 - Fix exception on log download upon file change by switching to chunked encoding.
  • #3740 - Remove default submit from settings forms.
  • #3742 - Fix link to language packs.
  • #3743 - GCODE viewer: Fix layer tooltip location.
  • #3769 - Fix detection of virtual environments on newer versions of virtualenv that do not set sys.real_prefix.
  • #3790 - Plugin Manager: Fix an uncaught TypeError when setting "Force the use of the --user flag with pip install".
  • #3796 - Fix handling of webcam permission, see also #3797.
  • Don't drop state messages on the socket, even if rate limiting is active. Otherwise we might drop a final switch to Offline and hence still displayed as connected when we are not.
  • Gracefully handle non existing Accept-Encoding header.
  • Treat wss/ws protocol as https/http in websocket origin check, see also this forum post.
  • Double check download folder in octoprint.util.net.download_file.
  • Fix settings overlays, they were not merging the defaults.
  • Make settings remove behave identical to get and set regarding defaults.
  • Protect against a potential deadlock in LocalFileStorage.
  • Prefer collections.abc over collections imports, as the latter will no longer be supported in Python 3.9.
  • Get rid of an unnecessary double load of plugins during server startup.
  • Discovery: Send three SSDP notify messages as defined in the spec, not just one.
  • Software Update: Fix CLI.
  • Various code fixes as pointed out by static analysis tools.

Special thanks to all the contributors!

Special thanks to everyone who contributed to this RC, especially to @chudsaviet, @coldtobi, @cp2004, @frenck, @j7126, @jneilliii, @ManuelMcLure, @mjrider, @OllisGit, @shaver, @Sophist-UK and @urish for their PRs!

More information

- Python
Published by foosel over 5 years ago

octoprint - 1.4.2 (stable release)

This is a hotfix release to fix three bugs in 1.4.1 that sadly only were reported after the release candidate phase for 1.4.1.

The heads-ups from 1.4.1 still apply, please read this release's release notes as well for a full picture of what you should be aware of and what changed!

Bug fixes

  • #3674 - Fix a bug that prevents plugin installation via upload for plugins over 1MB in size.
  • #3676 - Work around an issue in a third party dependency causing server startup to fail if there are files in the watched folder and polling of the watched folder is enabled. Also further hardening against similar issues interfering with server startup.
  • #3678 - Fix a bug that prevents plugin installation via URL from servers that enclose the filename option in the Content-Disposition HTTP header in double quotes. Affected some plugins not hosted on Github.

Special thanks to all the contributors!

Special thanks to everyone who contributed to this hotfix release, especially to @osubuu for their PR!

More information

  • Commits
  • As this is a hotfix release, there were no release candidates

- Python
Published by foosel over 5 years ago

octoprint - 1.4.1 (stable release)

Heads-up for users of the Telegram plugin v1.5.0 or lower (and possibly other plugins that use long deprecated flask.ext imports)

The Telegram plugin up until the currently latest version 1.5.0 from August 7th 2019 is incompatible to OctoPrint 1.4.1 and later (see this ticket). The reason for that is that OctoPrint had to update its third party Flask dependency for security reasons, and this plugin (and possibly others) still use an import syntax related to that dependency that has been deprecated and warned about for several years now and which finally has been removed in current versions of Flask.

A fix has been provided to the Telegram plugin maintainers and has been merged, but so far no new release has been pushed out.

If you notice the Telegram plugin or another third party plugin no longer loading under OctoPrint 1.4.1 with an error logged to octoprint.log that looks similar to

File "/home/pi/oprint/local/lib/python2.7/site-packages/octoprint/plugin/core.py", line 972, in _import_plugin module = _load_module(module_name, spec) File "/home/pi/oprint/local/lib/python2.7/site-packages/octoprint/plugin/core.py", line 71, in _load_module return imp.load_module(name, f, filename, details) File "/home/pi/oprint/local/lib/python2.7/site-packages/octoprint_telegram/__init__.py", line 5, in <module> from flask.ext.babel import gettext ImportError: No module named ext.babel

then this outdated import syntax is the reason. That is something that needs to be fixed by the plugin maintainers by pushing out a new release. Please do not open issues about this on the OctoPrint repository, I cannot do anything about this.

Heads-up for users of the TouchUI plugin v0.3.14 or lower

The TouchUI plugin up until the currently latest version 0.3.14 from March 11 2020 is incompatible to OctoPrint as it makes assumptions about the structure of the UI that are no longer true, leading to the plugin breaking the OctoPrint UI when active.

A fix is ready but no release has been pushed out yet. Until a fixed version is released it is suggested to disable the plugin under 1.4.1.

See also the ticket here.

Heads-up for plugin authors: Jinja2 update has one backwards incompatibility, please read

Current Jinja versions no longer allow modifying variables set outside of for loops inside them. So something like:

jinja2 {% set mark_active = True %} {% for item in items %} # do something {% if mark_active %} # do something more {% set mark_active = False %} {% endif %} {% endfor %}

no longer works - mark_active will be reset on every iteration of the loop to its initial value False. The fix is to use namespaces to hold the modifiable values instead:

jinja2 {% set ns = namespace(mark_active = True) %} {% for item in items %} # do something {% if ns.mark_active %} # do something more {% set ns.mark_active = False %} {% endif %} {% endfor %}

See also #1697 and https://jinja.palletsprojects.com/en/2.11.x/templates/#assignments

The Jinja dependency upgrade thus introduces a breaking change for plugins as well. However, it was necessary for security reasons: older versions have a bug that could allow template authors to break out of the template sandbox. Not a huge risk in the context of OctoPrint (plugins already have a lot more power than Jinja would give them), but still overdue to fix.

Heads-up for plugin authors: awesome-slugify is now bundled as octoprint.vendor.awesome_slugify, update your imports!

Due to a necessary dependency update of a third party dependency pulling in a different slugify library ("python-slugify") that clashes with awesome-slugify, the latter has been bundled. If you use import slugify anywhere in your code, please be aware that that will now possibly pull in the aforementioned other library or possibly a partially overwritten awesome-slugify. Plugin authors are advised to update the imports of awesome-slugify like this:

``` python

old

example 1

import slugify

example 2

from slugify import Slugify

new

example 1

try: # OctoPrint>=1.4.1 import octoprint.vendor.awesome_slugify as slugify except ImportError: # OctoPrint<=1.4.0 import slugify

example 2

try: # OctoPrint>=1.4.1 from octoprint.vendor.awesome_slugify import Slugify except ImportError: # OctoPrint<=1.4.0 from slugify import Slugify ```

That will also guarantee backwards compatibility if installed under OctoPrint versions prior to 1.4.1. Alternatively switch fully to the 1.4.1 version and adjust your plugin listing to a minimum OctoPrint version of 1.4.1.

Heads-up for developers: The included virtual printer has had its settings migrated to a different location in config.yaml

The bundled Virtual Printer plugin has finally been turned fully isolated into a self contained plugin and thus its settings have been moved from devel.virtualPrinter to plugins.virtual_printer in config.yaml. An auto migration is in place that should take care of moving anything already configured on first start under 1.4.1+, however should you be somehow manipulating config.yaml through automation or something in order to change virtual printer settings, you'll have to update your workflows.

Improvements

  • #216 - New control on Temperature tab to set all heaters to temperatures from a configured temperature profile with one click (see also #3617)
  • #2312 - Software Update: Refuse to update if there is insufficient disk scape to do so. Disk space threshold is configurable and defaults to at least 150MB of free space in the Python package installation folder, the internal plugin folder and the system's temporary files folder. This value might be revisited and increased if it proves to be too small still.
  • #2451 - Add support for sub folders on the watched folder (see also #3557)
  • #3344 - Don't invalidate server side cache on hard reload while printing. Should combat performance issues on low powered systems.
  • #3410 - Add bundled "File Check" plugin to sanity check uploaded files and warn about potential issues. Currently the plugin only detects {travel_speed} place holders left in GCODE. Read more in the plugin's README.
  • #3411 - GCode viewer: Show retracts, moves and head position only for the current layer to reduce visual noise.
  • #3415 - Backup: Allow to specify path to backup to create on CLI: octoprint plugins backup:backup --path /path/to/my/backup.zip
  • #3420 - Add manifest.json and link from web UI to allow styling of homepage shortcuts on mobile devices as UI-less browser window.
  • #3433 - Allow sorting of file list by last print date.
  • #3471 - Reword buttons on print cancel confirmation to avoid misunderstandings.
  • #3479 - Configuration option to disable SD print detection, to work around misbehaving firmware variants (e.g. Ultimaker 2/2+, for which that setting will also now get applied automatically)
  • #3482 - Configuration options to configure SameSite and SecureCookie headers. Might be needed for certain environments where OctoPrint gets embedded into a third party page, together with switching to https.
  • #3496 - Add option to restore from a backup right at the start of the first run setup wizard.
  • #3497 - Performance improvements for static assets: introduce gzip encoding, whitespace removal, assetpreloading, request count reduction & also update some frontend dependencies.
  • #3506 - Allow to inject custom temperature from plugins into the data collection in the backend. Note that this will not have custom temperature magically appear in the UI, this is only the first step towards that.
  • #3526 - Set LC_ALL and LANG environment variables in bundled startup files.
  • #3534 - Add optional request profiler. Can be enabled by starting the server with --debug and adding the perfprofile query parameter to any request.
  • #3567 - Clean up workaround for #2166 that is no longer needed
  • #3569 - Properly reflect on the UI that feed rate and flow rate modifiers are write-only ephemeral values that cannot be read back from the firmware by removing permanent display.
  • #3590 - Add M82 and M83 to extrude/retract commands to make sure the extruder really is switcher to relative and back to absolute in case of firmware that decouples the extruder from G90 & G91.
  • #3596 - Add move button to files and folders on file list in the sidebar so that moving around files and folders becomes natively supported by the UI (see also #3609)
  • #3604 - Add print, select and userdata as provided via the API to the Upload event.
  • #3606 - Plugin Manager: Include stats & github metadata for plugins in the repository, just like now available on plugins.octoprint.org.
  • #3640: Disable JS minification for third party plugins again, it can cause issues in one plugin that are non recoverable and cause the JS of all third party plugins to no longer load. Added devel.webassets.minify_plugins config setting to allow to turn it back on by plugin authors to test their plugins for minification compatibility (which should be a goal).
  • #3661 - Protect against invalid input data extracted from Github in plugin repository browser
  • Tracking: Send full environment with each daily pong for better stats regarding used Python & operating system versions
  • Keep load & print button active if the file is already loaded because otherwise some people get confused when they "can't reprint the same file again"
  • Printer Safety Check: Renamed to Firmware Check & extracted into still bundled but separately maintained plugin. Now also detects firmware with known broken communcation protocol implementations (like the infamous CBD make it and ZWLF make it variants) and links to related FAQ entries on detection.
  • Moved source code repository from foosel/OctoPrint to OctoPrint/OctoPrint and updated links where needed accordingly.
  • Include python version in footer of UI
  • Plugin Manager: Add python compatibility information for installed plugins to overview in settings
  • Not only check general connectivity to the internet, but also whether DNS name resolution works (per default against octoprint.org). This is to combat repeatedly observed issues by users who managed to somehow get their system connected to the internet but without a valid nameserver configuration.
  • Allow disabling sanity checking of tool commands Tn sent to the printer, in case of misbehaving firmware that reports tools as invalid that aren't invalid.
  • New bundled plugin "Printer notifications" that implements support for //action:notification messages from the printer
  • Action Command Prompt: Renamed to "Printer dialogs" in the settings
  • Add link to default cancel GCode script to GCode script editor. People tend to delete it and then are unable to find it again in the docs.
  • Persist file list styly in local storage just like sorting & filter options.
  • Appkeys: Allow to manually generate keys for users via the global settings as well.
  • Strongly recommend bundled Appkeys plugin over global API key for improved security.
  • Plugin Manager: Dedicated error message on general failure instead of unhelpful and misleading "pip not available" message.
  • Port patterns and individual baudrates can now be put on a blacklist so they don't get offered by OctoPrint to connect to and/or used in auto detection.
  • New hook octoprint.comm.transport.serial.additional_port_names to allow plugins to inject additional (custom) port names into OctoPrint to use for connecting to. Especially of interest in combination with octoprint.comm.transport.serial.factory.
  • Virtual Printer: Isolate fully into its own plugin, incl. migrating the settings from devel.virtualPrinter to plugins.virtual_printer.
  • Virtual Printer: Support baudrate and port properties on faked serial.
  • Plugin Manager: Support installing single file plugins from URL or from upload.
  • Improve performance of octoprint.filemanager.util.LineProcessorStream
  • Increase size of file metadata LRU cache to 100 entries
  • Refactored buffered readline wrapper around serial port and added logging of read \0 bytes. See also discussion in #2454.
  • Action Command Prompt aka Printer Dialogs: Default to emergency sending & signalling being enabled, if detected as supporte from the firmware's capability report.
  • Plugin Manager: Small styling changes on plugin list and repository browser
  • Logging: Added an UI indicator when serial.log is active that acts as a reminder to disable it again after debugging.
  • Some layout optimizations in the About dialog.
  • Add link to Discord server to footer and About dialog.
  • GCode Viewer: Isolate fully into its own plugin, incl. migrating the settings from gcodeViewer to plugins.gcodeviewer.
  • Slight changes in the HTML markup to improve E2E testability.
  • Update Tornado, Jinja2, Flask and related dependencies to last versions supporting both Python 2 and 3. See also #3551
  • Various documentation fixes (see also #3516, #3517, #3575, #3608)
  • Various translation fixes (see also #3514)

Bug fixes

  • #3346 - Only compute ETag for HTML once per reload & optimize performance of config hashing
  • #3376 - Do not close and reopen connection on spammed connection requests but instead deny them.
  • #3378 - Drop file descriptors everywhere we can to avoid issues with processes inheriting them.
  • #3394 - Fix broken by design comm port auto detection through complete rewrite.
  • #3404 - Fix ordering of replacement tabs for core tabs declared by plugins.
  • #3416 - Backup: Preserve original file modification timestamp on backup restore
  • #3422 - Fix caching on /api/files
  • #3467 - Fix temperature reporting for shared nozzle setups where the firmware only ever reports T0
  • #3492 - Fix /api/version permission requirements
  • #3493 - Fix a NoneType comparison error (see also #3494)
  • #3502 - Possible fix for web interface not fully loading due to a not removed timeout trigger.
  • #3510 - Work around a bug in Tornado causing same origin checks to be run case sensitive which doesn't conform with RFC6454
  • #3525 - select command during an ongoing print should return 409 Conflict on the API
  • #3536 - Fix plugin data cleanup, it should not set deleted plugin settings to null but instead delete them from the config (see also #3566)
  • #3547 - Fix Read-only group behaviour so that it is actually possible to create read-only users. The User group is no longer enforced on users, though pre checked for new users (if kept default). This makes it also possible to create group less users, so keep that in mind.
  • #3553 - Virtual Printer: Fix issue where _simulateTemps may never reach target temp
  • #3554 - Fix persistence of default flag on group edit.
  • #3555 - Pin markupsafe Jinja2 dependency to >=1.1,<2.0. Newer versions are Python 3 only.
  • #3582 - Announcements: Fix navbar icon
  • #3627 (regression) - Fix auto detection scenario with port AUTO, set baudrate and one possible port
  • #3628 (regression) - Fix unclosed tags in German translation which messed up the settings
  • #3629 (regression?) - Fix logging error caused by tracking plugin during shutdown
  • #3630 (regression) - Fix single file plugin installs under Python 2.7
  • #3633 (regression) - Fix high CPU load while connected to a printer
  • #3642 (regression) - Fix styling on file list titles causing an issue with plugins like PrintTimeGenius that add on to the title, making the additional information toggle no longer work.
  • #3653 (regression) - Fixed disconnect during auto connect hanging indefinitely or not getting properly reported to frontend
  • #3655 (regression) - Fixed broken /api/files/local API
  • Fix progress reporting on files with CRLF EOLs
  • Only use supplied analysis data if it is actually complete, otherwise enrich with our own analysis
  • Fix session validation, remove side effects for login behaviour after server restart.
  • Software Update: Delete unnecessary check_providers from config for good.
  • Mark all bundled plugins as Python 3 compatible (cosmetic change only, they already were).
  • Plugin Manager: Fix styling of affected versions list in plugin notification popups.
  • Change instances of logger.warn to logger.warning
  • Change instances of warnings.warning to warnings.warn
  • Don't log warnings from plugin system initialization for CLI command invocations.
  • Fix some Py2vs3 bugs
  • Fix a bug that could cause custom translations to not properly load due to a missing path check.
  • Fix a possible race condition in the login dialog causing initial login to fail.
  • Fixed a duplicated ID in the generated HTML (regression)

Special thanks to all the contributors!

Special thanks to everyone who contributed to this release, especially to @drifkind, @eyal0, @FedericoNembrini, @fieldOfView, @flaviut, @jneilliii, @joshfriend, @justfalter, @kerber, @lachyc, @osubuu and @tedder for their PRs!

More information

- Python
Published by foosel over 5 years ago

octoprint - 1.4.1rc4 (Release candidate)

⚠️ 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 a Release Candidate.

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

  • #3661: Protect against invalid input data extracted from Github in plugin repository browser

Bug fixes

  • #3653 (regression): Fixed disconnect during auto connect hanging indefinitely or not getting properly reported to frontend
  • #3655 (regression): Fixed broken /api/files/local API
  • Fixed a duplicated ID in the generated HTML (regression)

Special thanks to all the contributors!

Special thanks to everyone who contributed to this release candidate and provided full, analyzable bug reports!

More information

- Python
Published by foosel over 5 years ago

octoprint - 1.4.1rc3 (Release candidate)

⚠️ 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 a Release Candidate.

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

  • #3640: Disable JS minification for third party plugins again, it can cause issues in one plugin that are non recoverable and cause the JS of all third party plugins to no longer load. Added devel.webassets.minify_plugins config setting to allow to turn it back on by plugin authors to test their plugins for minification compatibility (which should be a goal).
  • Slight changes in the HTML markup to improve E2E testability.

Bug fixes

  • #3627: Fix another issue with auto detection failing for port AUTO and set baudrate.
  • #3642: Fix styling on file list titles causing an issue with plugins like PrintTimeGenius that add on to the title, making the additional information toggle no longer work.
  • Fix a possible race condition in the login dialog causing initial login to fail.

Special thanks to all the contributors!

Special thanks to everyone who contributed to this release candidate and provided full, analyzable bug reports!

More information

- Python
Published by foosel over 5 years ago

octoprint - 1.4.1rc2 (Release candidate)

⚠️ 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 a Release Candidate.

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!

Bug fixes

  • #3627 (regression) - Fix auto detection scenario with port AUTO, set baudrate and one possible port
  • #3628 (regression) - Fix unclosed tags in German translation which messed up the settings
  • #3629 (regression?) - Fix logging error caused by tracking plugin during shutdown
  • #3630 (regression) - Fix single file plugin installs under Python 2.7
  • #3633 (regression) - Fix high CPU load while connected to a printer

Special thanks to all the contributors!

Special thanks to everyone who contributed to this release candidate and provided full, analyzable bug reports!

More information

- Python
Published by foosel over 5 years ago

octoprint - 1.4.1rc1 (release candidate)

⚠️ 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!

Heads-up for plugin authors: Jinja2 update has one backwards incompatibility, please read

Current Jinja versions no longer allow modifying variables set outside of for loops inside them. So something like:

jinja2 {% set mark_active = True %} {% for item in items %} # do something {% if mark_active %} # do something more {% set mark_active = False %} {% endif %} {% endfor %}

no longer works - mark_active will be reset on every iteration of the loop to its initial value False. The fix is to use namespaces to hold the modifiable values instead:

jinja2 {% set ns = namespace(mark_active = True) %} {% for item in items %} # do something {% if ns.mark_active %} # do something more {% set ns.mark_active = False %} {% endif %} {% endfor %}

See also #1697 and https://jinja.palletsprojects.com/en/2.11.x/templates/#assignments

The Jinja dependency upgrade thus introduces a breaking change for plugins as well. However, it was necessary for security reasons: older versions have a bug that could allow template authors to break out of the template sandbox. Not a huge risk in the context of OctoPrint (plugins already have a lot more power than jinja would give them), but still overdue to fix.

Heads-up for plugin authors: awesome-slugify is now bundled as octoprint.vendor.awesome_slugify, update your imports!

Due to a necessary dependency update of a third party dependency pulling in a different slugify library ("python-slugify") that clashes with awesome-slugify, the latter has been bundled. If you use import slugify anywhere in your code, please be aware that that will now possibly pull in the aforementioned other library or possibly a partially overwritten awesome-slugify. Plugin authors are advised to update the imports of awesome-slugify like this:

``` python

old

example 1

import slugify

example 2

from slugify import Slugify

new

example 1

try: # OctoPrint>=1.4.1 import octoprint.vendor.awesome_slugify as slugify except ImportError: # OctoPrint<=1.4.0 import slugify

example 2

try: # OctoPrint>=1.4.1 from octoprint.vendor.awesome_slugify import Slugify except ImportError: # OctoPrint<=1.4.0 from slugify import Slugify ```

That will also guarantee backwards compatibility if installed under OctoPrint versions prior to 1.4.1. Alternatively switch fully to the 1.4.1 version and adjust your plugin listing to a minimum OctoPrint version of 1.4.1.

Heads-up for developers: The included virtual printer has had its settings migrated to a different location in config.yaml

The bundled Virtual Printer plugin has finally been turned fully isolated into a self contained plugin and thus its settings have been moved from devel.virtualPrinter to plugins.virtual_printer in config.yaml. An auto migration is in place that should take care of moving anything already configured on first start under 1.4.1+, however should you be somehow manipulating config.yaml through automation or something in order to change virtual printer settings, you'll have to update your workflows.

Improvements

  • #216 - New control on Temperature tab to set all heaters to temperatures from a configured temperature profile with one click (see also #3617)
  • #2312 - Software Update: Refuse to update if there is insufficient disk scape to do so. Disk space threshold is configurable and defaults to at least 150MB of free space in the Python package installation folder, the internal plugin folder and the system's temporary files folder. This value might be revisited and increased if it proves to be too small still.
  • #2451 - Add support for sub folders on the watched folder (see also #3557)
  • #3344 - Don't invalidate server side cache on hard reload while printing. Should combat performance issues on low powered systems.
  • #3410 - Add bundled "File Check" plugin to sanity check uploaded files and warn about potential issues. Currently the plugin only detects {travel_speed} place holders left in GCODE. Read more in the plugin's README.
  • #3411 - GCode viewer: Show retracts, moves and head position only for the current layer to reduce visual noise.
  • #3415 - Backup: Allow to specify path to backup to create on CLI: octoprint plugins backup:backup --path /path/to/my/backup.zip
  • #3420 - Add manifest.json and link from web UI to allow styling of homepage shortcuts on mobile devices as UI-less browser window.
  • #3433 - Allow sorting of file list by last print date.
  • #3471 - Reword buttons on print cancel confirmation to avoid misunderstandings.
  • #3479 - Configuration option to disable SD print detection, to work around misbehaving firmware variants (e.g. Ultimaker 2/2+, for which that setting will also now get applied automatically)
  • #3482 - Configuration options to configure SameSite and SecureCookie headers. Might be needed for certain environments where OctoPrint gets embedded into a third party page, together with switching to https.
  • #3496 - Add option to restore from a backup right at the start of the first run setup wizard.
  • #3497 - Performance improvements for static assets: introduce gzip encoding, whitespace removal, assetpreloading, request count reduction & also update some frontend dependencies.
  • #3506 - Allow to inject custom temperature from plugins into the data collection in the backend. Note that this will not have custom temperature magically appear in the UI, this is only the first step towards that.
  • #3526 - Set LC_ALL and LANG environment variables in bundled startup files.
  • #3534 - Add optional request profiler. Can be enabled by starting the server with --debug and adding the perfprofile query parameter to any request.
  • #3567 - Clean up workaround for #2166 that is no longer needed
  • #3569 - Properly reflect on the UI that feed rate and flow rate modifiers are write-only ephemeral values that cannot be read back from the firmware by removing permanent display.
  • #3590 - Add M82 and M83 to extrude/retract commands to make sure the extruder really is switcher to relative and back to absolute in case of firmware that decouples the extruder from G90 & G91.
  • #3596 - Add move button to files and folders on file list in the sidebar so that moving around files and folders becomes natively supported by the UI (see also #3609)
  • #3604 - Add print, select and userdata as provided via the API to the Upload event.
  • #3606 - Plugin Manager: Include stats & github metadata for plugins in the repository, just like now available on plugins.octoprint.org.
  • Tracking: Send full environment with each daily pong for better stats regarding used Python & operating system versions
  • Keep load & print button active if the file is already loaded because otherwise some people get confused when they "can't reprint the same file again"
  • Printer Safety Check: Renamed to Firmware Check & extracted into still bundled but separately maintained plugin. Now also detects firmware with known broken communcation protocol implementations (like the infamous CBD make it and ZWLF make it variants) and links to related FAQ entries on detection.
  • Moved source code repository from foosel/OctoPrint to OctoPrint/OctoPrint and updated links where needed accordingly.
  • Include python version in footer of UI
  • Plugin Manager: Add python compatibility information for installed plugins to overview in settings
  • Not only check general connectivity to the internet, but also whether DNS name resolution works (per default against octoprint.org). This is to combat repeatedly observed issues by users who managed to somehow get their system connected to the internet but without a valid nameserver configuration.
  • Allow disabling sanity checking of tool commands Tn sent to the printer, in case of misbehaving firmware that reports tools as invalid that aren't invalid.
  • New bundled plugin "Printer notifications" that implements support for //action:notification messages from the printer
  • Action Command Prompt: Renamed to "Printer dialogs" in the settings
  • Add link to default cancel GCode script to GCode script editor. People tend to delete it and then are unable to find it again in the docs.
  • Persist file list styly in local storage just like sorting & filter options.
  • Appkeys: Allow to manually generate keys for users via the global settings as well.
  • Strongly recommend bundled Appkeys plugin over global API key for improved security.
  • Plugin Manager: Dedicated error message on general failure instead of unhelpful and misleading "pip not available" message.
  • Port patterns and individual baudrates can now be put on a blacklist so they don't get offered by OctoPrint to connect to and/or used in auto detection.
  • New hook octoprint.comm.transport.serial.additional_port_names to allow plugins to inject additional (custom) port names into OctoPrint to use for connecting to. Especially of interest in combination with octoprint.comm.transport.serial.factory.
  • Virtual Printer: Isolate fully into its own plugin, incl. migrating the settings from devel.virtualPrinter to plugins.virtual_printer.
  • Virtual Printer: Support baudrate and port properties on faked serial.
  • Plugin Manager: Support installing single file plugins from URL or from upload.
  • Improve performance of octoprint.filemanager.util.LineProcessorStream
  • Increase size of file metadata LRU cache to 100 entries
  • Refactored buffered readline wrapper around serial port and added logging of read \0 bytes. See also discussion in #2454.
  • Action Command Prompt aka Printer Dialogs: Default to emergency sending & signalling being enabled, if detected as supporte from the firmware's capability report.
  • Plugin Manager: Small styling changes on plugin list and repository browser
  • Logging: Added an UI indicator when serial.log is active that acts as a reminder to disable it again after debugging.
  • Some layout optimizations in the About dialog.
  • Add link to Discord server to footer and About dialog.
  • GCode Viewer: Isolate fully into its own plugin, incl. migrating the settings from gcodeViewer to plugins.gcodeviewer.
  • Update Tornado, Jinja2, Flask and related dependencies to last versions supporting both Python 2 and 3. See also #3551
  • Various documentation fixes (see also #3516, #3517, #3575, #3608)
  • Various translation fixes (see also #3514)

Bug fixes

  • #3346 - Only compute ETag for HTML once per reload & optimize performance of config hashing
  • #3376 - Do not close and reopen connection on spammed connection requests but instead deny them.
  • #3378 - Drop file descriptors everywhere we can to avoid issues with processes inheriting them.
  • #3394 - Fix broken by design comm port auto detection through complete rewrite.
  • #3404 - Fix ordering of replacement tabs for core tabs declared by plugins.
  • #3416 - Backup: Preserve original file modification timestamp on backup restore
  • #3422 - Fix caching on /api/files
  • #3467 - Fix temperature reporting for shared nozzle setups where the firmware only ever reports T0
  • #3492 - Fix /api/version permission requirements
  • #3493 - Fix a NoneType comparison error (see also #3494)
  • #3502 - Possible fix for web interface not fully loading due to a not removed timeout trigger.
  • #3510 - Work around a bug in Tornado causing same origin checks to be run case sensitive which doesn't conform with RFC6454
  • #3525 - select command during an ongoing print should return 409 Conflict on the API
  • #3536 - Fix plugin data cleanup, it should not set deleted plugin settings to null but instead delete them from the config (see also #3566)
  • #3547 - Fix Read-only group behaviour so that it is actually possible to create read-only users. The User group is no longer enforced on users, though pre checked for new users (if kept default). This makes it also possible to create group less users, so keep that in mind.
  • #3553 - Virtual Printer: Fix issue where _simulateTemps may never reach target temp
  • #3554 - Fix persistence of default flag on group edit.
  • #3555 - Pin markupsafe Jinja2 dependency to >=1.1,<2.0. Newer versions are Python 3 only.
  • #3582 - Announcements: Fix navbar icon
  • Fix progress reporting on files with CRLF EOLs
  • Only use supplied analysis data if it is actually complete, otherwise enrich with our own analysis
  • Fix session validation, remove side effects for login behaviour after server restart.
  • Software Update: Delete unnecessary check_providers from config for good.
  • Mark all bundled plugins as Python 3 compatible (cosmetic change only, they already were).
  • Plugin Manager: Fix styling of affected versions list in plugin notification popups.
  • Change instances of logger.warn to logger.warning
  • Change instances of warnings.warning to warnings.warn
  • Don't log warnings from plugin system initialization for CLI command invocations.
  • Fix some Py2vs3 bugs
  • Fix a bug that could cause custom translations to not properly load due to a missing path check.

Special thanks to all the contributors!

Special thanks to everyone who contributed to this RC, especially to @drifkind, @eyal0, @FedericoNembrini, @fieldOfView, @flaviut, @jneilliii, @joshfriend, @justfalter, @kerber, @lachyc, @osubuu and @tedder for their PRs!

More information

- Python
Published by foosel over 5 years ago

octoprint - 1.4.0 (stable)

Heads-up Plugin Authors: Python 2's EOL and Python 3

This release officially adds support to run OctoPrint under Python 3 instead of 2, which has become EOL as of January 1st 2020. However, most third party plugins probably do not yet support Python 3. In order to allow Plugin Authors to test and if necessary adjust their plugins first before OctoPrint tries to load them under Python 3, a new plugin property __plugin_pythoncompat__ has been introduced. Plugins should define the compatibly Python version via this property which OctoPrint will check on load and only proceed with loading the plugin under Python 3 if it signals compatibility.

Additionally, the Plugin Repository has been expanded to include a new field compatibility.python which signals Python compatibility on the listing as well so that OctoPrint's Plugin Manager will only show such plugins from the repository as installable under Python 3 which are configured as such.

Please see this guide in the documentation on how to go about compatibility testing and how to modify existing plugins to work with OctoPrint when running under Python 3.

By default, OctoPrint will assume compatibility to Python 2 only.

Features

Improvements

  • #783 - New events UserLoggedIn & UserLoggedOut, on the push socket only available to admin users.
  • #935 - Support alternative source file types in SlicerPlugin.
  • #1665 - Include /dev/ttyS* in serial port pattern.
  • #1703 - Clarify some source code comments.
  • #1748 - Add sameDevice field to slicing API.
  • #1854 - New plugin hooks octoprint.timelapse.capture.[pre/post] to allow plugins to react to capturing happening.
  • #2328 - Grammar fix.
  • #3006 - Add options to allow gcode analysis, only when idle (default, former behaviour) or disable altogether. See also #3337.
  • #3210 - Clarify documentation on when the Error event will fire.
  • #3212 - Mark serial port file handle as not inheritable in order to avoid issues with spawned sub processes keeping a lock on the port vs "exclusive" open mode.
  • #3287 - Action Command Prompt: More flexibility for command definition for better compatibility with Klipper.
  • #3288 - Plugin Manager: Make plugin list filterable by bundled/third party and enabled/disabled and add a search box..
  • #3292 - Action Command Prompt: Support multi line option buttons.
  • #3295 - SWU: Added support for github_commit tracking configuration the the UI.
  • #3299 - Plugin Manager: Option to remove the settings and data of a plugin during plugin uninstall, on click and also to clean up any left overs from by now uninstalled plugins in the settings and data folders.
  • #3318 - Improve performance of the server side gcode interpreter.
  • #3326 - Adjust the toolbar color on Android based on the selected navbar background color.
  • #3342 - Prerender included markdown (AUTHORS.md, SUPPORTERS.md, THIRDPARTYLICENSES.md) and remove changelog (CHANGELOG.md) from About dialog, instead redirect to Github release page which has the full changelog.
  • Strip the remoteAddress from ClientOpened events pushed via the websocket to guests.
  • Loading animation to better communicate when the interface has actually successfully loaded and can be used. Can also be disabled via the settings.
  • Improved logging in case of plugin syntax errors.
  • Sanitized & reconfigured some HTTP headers:
    • X-Content-Type-Options is now set to nosniff
    • X-Frame-Options is not set to sameorigin unless configured otherwise
    • unused JSESSIONID cookie removed from SockJS
  • Clarify use of printer profile fields.
  • PMGR/SWU: Added flag to ignore the throttle state. Will allow people to circumvent the shoot-yourself-into-the-foot-countermeasures that prevent software updates & plugin installs while in a throttled state by editing config.yaml.
  • SWU: Do not persist check providers across reboots.
  • SWU: Add pypi_release version check type
  • SWU: Option to pip auto update right from within OctoPrint. Opt-in since pip updates can and have broken backwards compatibility in the past.
  • Tell users who have JavaScript disabled that OctoPrint's UI requires JS instead of presenting them with a non-functional interface.
  • Do not refresh site source on hard refresh if we are currently printing but print warning to log to use _refresh if it's actually required. See also #3344 for further discussion.
  • Various dependency updates. See also #1536.
  • Various documentation fixes and improvements. See also #2804, #3305, #3233, #3325, #3328.
  • Various typo fixes. See also #3297, #3330
  • #3367 - Ensure that static CSS and JS files always get the correct MIME Type associated, to work around issues when installed under Windows 10 with invalid entries in the registry triggering strict MIME checking
  • #3381 - Continue to support request parameters on the /api/login endpoint for now for backwards compatibility with API clients that still use things like /api/login?passive=true, e.g. older versions of Printoid
  • Remove a left-over comment from the Python 3 migration
  • #3400 (UX of new functionality) - Add ClientAuthed event to allow plugins to react to a client logging in on the socket
  • #3418 (UX of new functionality) - Add API endpoint /api/currentuser to retrieve permissions & groups of currently logged in user
  • #3425 - Change method of prompting for log in for guests without permissions
  • Add documentation for /api/access endpoints and update existing documentation with permission information
  • #3442 (UX of new functionality) - Plugin Manager: Add UI representation of incompatible installed plugins
  • Removed a duplicated line of code
  • #3454 - Explicitly document changed LineProcessorStream behaviour under Python 3
  • (Re-)Implement login dialog through a UiPlugin to work around various issues with regards to caching and general workflow with the current approach.
  • Docs for new access control situation.
  • Remove some left-overs of old login UI and fix some code comments.

Bug fixes

  • #3125 - Fix potential dead lock when cancelling an SD print.
  • #3202 - Fix a "dictionary changed size during iteration" error.
  • #3267 - Fix OctoPrint not attempting to autoconnect to printer if port is set to None (= AUTO)
  • #3278 - Plugin Manager: Disable plugin management while printer is busy (e.g. paused), not just when actively printing.
  • #3295 - SWU: Fix a link to the documentation.
  • #3301 - Fix a race condition in SD print detection that could cause a just cancelled print to "start again".
  • #3302 - Timelapse: "Save as default" checkbox should always be enabled, regardless of printer state.
  • #3309 - Fix overzealous filtering of history entries on the /printer/{tool|bed|chamber} API endpoints.
  • #3311 - Fix a wording issue.
  • #3319 - Virtual printer: Do not assume that an S parameter must be present on M220 (and then crash when it's not).
  • #3327 - Fix a wrong used HTTP status code on the /api/login endpoint.
  • #3334 - GCODE Viewer: Fix G2 and G3 arcs being misinterpreted.
  • #3335 - Fix another "dictionary changed size during iteration" error.
  • Fix syncing of commands with ok responses. Thanks to @KevinOConner for the idea. See also #2599.
  • Fix the unrendered timelapse list being visible when empty.
  • SockJS iframe fallback no longer embeds SockJS library from a CDN.
  • Aggressively escape return values of the server in the UI.
  • #3348 (regression) - Fix an issue with the warning decorator trying to access non existing fields on instance methods, causing trouble with plugins still using deprecated settings methods.
  • #3349 (regression) - Fix an issue with unset optional headers on file uploads, causing uploads to fail in case of a missing content type or file name, e.g. from Cura.
  • #3350 (regression) - Appkeys: Fix wrong data type for newly generated keys under Python 3, causing the keys to not match and the plugin to not properly work.
  • #3354 (regression - Fix timelapse start not triggering correctly due to using a no longer existing field in the PrintStarted payload.
  • #3357 (regression) - Fix local autologin no longer working due to a logic change introduced by the new granular permission system.
  • #3361 (regression) - Fix an exception raised when attempting to log out the single admin user if access control is disabled.
  • #3362 (regression) - Fix escaping of placeholders in some error notifications.
  • #3363 (regression) - Gracefully handle missing subfolders on file list nodes.
  • #3364 (regression) - Make sure data is actually set.
  • Appkeys: Fix a deprecation warning. (regression)
  • #3365 (regression) - Fix permissions of global API key
  • #3366 (regression) - Appkeys: Fix issue causing 500/internal server error
  • #3370 (regression) - Fix issue causing lost session in case of a client IP change
  • #3371 (regression) - Python 3: Fix calculation of rolling_window in print time estimator
  • #3375 (regression) - Fix abort support for SimpleApiPlugin implementations
  • #3384 (regression) - Python 3: Fix login using HTTP Basic Auth
  • #3385 (regression) - Python 3: Fix serial port auto detection
  • #3388 (bug in new functionality) - Granular permission system: Fix extruder controls being visible without control permission
  • Fix a unicode issue under Windows (regression)
  • #3396 (regression) - Fix timelapse listing not properly refreshing on rendering a new timelapse
  • #3398 (bug in new functionality) - Fix checking of needs not being picky enough
  • #3409 (regression) - Fix timelapse rendering progress reporting under Python 3
  • #3419 (bug in new functionality) - Fix permission modelling for PRINT permission
  • #3425 (bug in new functionality) - Fix permissions for /api/settings
  • #3426 (regression) - Fix "Remember me" checkbox on forced login screen
  • #3428 (regression) - Fix plugin installation and other CLI interactions under Python 2 and 3 and Windows
  • #3431 (regression) - Fix folder writability test under Python 3
  • Fix endless loading issue when page is cached by browser in a tab and the server is down (regression)
  • #3434 (regression) - Fixed autologin & handling of disabled access control
  • #3400 (regression) - Reintroduced the message backlog on unauthenticated push sockets for better backwards compatibility for third party plugins.
  • #3442 (bug in new functionality) - Fix incompatible plugins being marked as enabled
  • (regression) Fixed handling of unset remote addresses
  • #3455 (regression) - Fix a Python 3 bug with the self._printer wrapper injected into plugins.
  • #3456 - Fix firmware info not being reported to plugins if firmware autodetection is disabled. Not a regression, but severe enough to merit inclusion ASAP.
  • #3459 (regression) - Fix login sessions not being persistent even with "Remember me" selected due to forced logout when becoming stale after 24h.
  • (regression) Fix buggy implementation of octoprint.server.api.(before|after)_request hooks.
  • (regression) Fix missing protection for blueprint plugins
  • (regression) Fix yet another Python 3 list vs iterator issue

Special thanks to all the contributors!

Special thanks to everyone who contributed to this release, especially to balassy, ByReaL, cameroncros, CapnBry, cbxbiker61, dforsi, eyal0, FHeilmann, fieldOfView, jammi, justfalter, kantlivelong, kevans91, koenkooi, mkobler, noahsmartin, povlhp, razerraz, RyuzakiKK, Salandora, smurfix, tedder & ZachNo for their PRs!

More information

- Python
Published by foosel almost 6 years ago

octoprint - 1.4.0rc6 (release candidate)

⚠️ 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 a Release Candidate.

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

  • #3454: Explicitly document changed LineProcessorStream behaviour under Python 3
  • Implement login dialog through a UiPlugin to work around various issues with regards to caching and general workflow with the current approach.
  • Docs for new access control situation.
  • Remove some left-overs of old login UI and fix some code comments.

Bug fixes

  • #3455 (regression): Fix a Python 3 bug with the self._printer wrapper injected into plugins.
  • #3456: Fix firmware info not being reported to plugins if firmware autodetection is disabled. Not a regression, but severe enough to merit inclusion ASAP.
  • #3459 (regression): Fix login sessions not being persistent even with "Remember me" selected due to forced logout when becoming stale after 24h.
  • (regression) Fix buggy implementation of octoprint.server.api.(before|after)_request hooks.
  • (regression) Fix missing protection for blueprint plugins
  • (regression) Fix yet another Python 3 list vs iterator issue

Special thanks to all the contributors!

Special thanks to everyone who contributed to this release candidate and provided full, analyzable bug reports!

More information

- Python
Published by foosel almost 6 years ago

octoprint - 1.4.0rc5 (release candidate)

⚠️ 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 a Release Candidate.

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

  • #3442 (UX of new functionality): Plugin Manager: Add UI representation of incompatible installed plugins
  • Removed a duplicated line of code

Bug fixes

  • #3434 (regression): Fixed autologin & handling of disabled access control
  • #3400 (regression): Reintroduced the message backlog on unauthenticated push sockets for better backwards compatibility for third party plugins.
  • #3442 (bug in new functionality): Fix incompatible plugins being marked as enabled
  • (regression) Fixed handling of unset remote addresses

Special thanks to all the contributors!

Special thanks to everyone who contributed to this release candidate and provided full, analyzable bug reports!

More information

- Python
Published by foosel about 6 years ago

octoprint - 1.4.0rc4 (release candidate)

⚠️ 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

  • #3400: Add ClientAuthed event to allow plugins to react to a client logging in on the socket
  • #3418: Add API endpoint /api/currentuser to retrieve permissions & groups of currently logged in user
  • #3425: Change method of prompting for log in for guests without permissions
  • Add documentation for /api/access endpoints and update existing documentation with permission information

Bug fixes

  • #3396: Fix timelapse listing not properly refreshing on rendering a new timelapse
  • #3398: Fix checking of needs not being picky enough
  • #3409: Fix timelapse rendering progress reporting under Python 3
  • #3419: Fix permission modelling for PRINT permission
  • #3425: Fix permissions for /api/settings
  • #3426: Fix "Remember me" checkbox on forced login screen
  • #3428: Fix plugin installation and other CLI interactions under Python 2 and 3 and Windows
  • #3431: Fix folder writability test under Python 3
  • Fix endless loading issue when page is cached by browser in a tab and the server is down

Special thanks to all the contributors!

Special thanks to everyone who contributed to this release candidate and provided full, analyzable bug reports, and also @CapnBry and @fieldOfView for their fixes!

More information

- Python
Published by foosel about 6 years ago

octoprint - 1.4.0rc3 (release candidate)

⚠️ 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

  • #3367 - Ensure that static CSS and JS files always get the correct MIME Type associated, to work around issues when installed under Windows 10 with invalid entries in the registry triggering strict MIME checking
  • #3381 - Continue to support request parameters on the /api/login endpoint for now for backwards compatibility with API clients that still use things like /api/login?passive=true, e.g. older versions of Printoid
  • Remove a left-over comment from the Python 3 migration

Bug fixes

  • #3365 (regression) - Fix permissions of global API key
  • #3366 (regression) - Appkeys: Fix issue causing 500/internal server error
  • #3370 (regression) - Fix issue causing lost session in case of a client IP change
  • #3371 - Python 3: Fix calculation of rolling_window in print time estimator
  • #3375 - Fix abort support for SimpleApiPlugin implementations
  • #3384 - Python 3: Fix login using HTTP Basic Auth
  • #3385 - Python 3: Fix serial port auto detection
  • #3388 - Granular permission system: Fix extruder controls being visible without control permission
  • Fix a unicode issue under Windows (regression)

Special thanks to all the contributors!

Special thanks to everyone who contributed to this release candidate and provided full, analyzable bug reports!

More information

- Python
Published by foosel about 6 years ago

octoprint - 1.4.0rc2 (release candidate)

⚠️ 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!

Bug fixes

  • #3348 (regression) - Fix an issue with the warning decorator trying to access non existing fields on instance methods, causing trouble with plugins still using deprecated settings methods.
  • #3349 (regression) - Fix an issue with unset optional headers on file uploads, causing uploads to fail in case of a missing content type or file name, e.g. from Cura.
  • #3350 (regression) - Appkeys: Fix wrong data type for newly generated keys under Python 3, causing the keys to not match and the plugin to not properly work.
  • #3354 (regression - Fix timelapse start not triggering correctly due to using a no longer existing field in the PrintStarted payload.
  • #3357 (regression) - Fix local autologin no longer working due to a logic change introduced by the new granular permission system.
  • #3361 (regression) - Fix an exception raised when attempting to log out the single admin user if access control is disabled.
  • #3362 (regression) - Fix escaping of placeholders in some error notifications.
  • #3363 (regression) - Gracefully handle missing subfolders on file list nodes.
  • #3364 (regression) - Make sure data is actually set.
  • Appkeys: Fix a deprecation warning. (regression)

Special thanks to all the contributors!

Special thanks to everyone who contributed to this release candidate and provided full, analyzable bug reports!

More information

- Python
Published by foosel about 6 years ago

octoprint - 1.4.0rc1 (release candidate)

⚠️ 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!

Heads-up Plugin Authors: Python 2's EOL and Python 3

This release candidate officially adds support to run OctoPrint under Python 3 instead of 2. However, most third party plugins probably do not yet support Python 3. In order to allow Plugin Authors to test and if necessary adjust their plugins first before OctoPrint tries to load them under Python 3, a new plugin property __plugin_pythoncompat__ has been introduced. Plugins should define the compatibly Python version via this property which OctoPrint will check on load and only proceed with loading the plugin under Python 3 if it signals compatibility.

Additionally, the Plugin Repository has been expanded to include a new field compatibility.python which signals Python compatibility on the listing as well so that OctoPrint's Plugin Manager will only show such plugins from the repository as installable under Python 3 which are configured as such.

Please see this post on the OctoPrint Community Forums on how to go about compatibility testing and how to modify existing plugins to work with OctoPrint when running under Python 3.

By default, OctoPrint will assume compatibility to Python 2 only.

Features

Improvements

  • #783 - New events UserLoggedIn & UserLoggedOut, on the push socket only available to admin users.
  • #935 - Support alternative source file types in SlicerPlugin.
  • #1665 - Include /dev/ttyS* in serial port pattern.
  • #1703 - Clarify some source code comments.
  • #1748 - Add sameDevice field to slicing API.
  • #1854 - New plugin hooks octoprint.timelapse.capture.[pre/post] to allow plugins to react to capturing happening.
  • #2328 - Grammar fix.
  • #3006 - Add options to allow gcode analysis, only when idle (default, former behaviour) or disable altogether. See also #3337.
  • #3210 - Clarify documentation on when the Error event will fire.
  • #3212 - Mark serial port file handle as not inheritable in order to avoid issues with spawned sub processes keeping a lock on the port vs "exclusive" open mode.
  • #3287 - Action Command Prompt: More flexibility for command definition for better compatibility with Klipper.
  • #3288 - Plugin Manager: Make plugin list filterable by bundled/third party and enabled/disabled and add a search box..
  • #3292 - Action Command Prompt: Support multi line option buttons.
  • #3295 - SWU: Added support for github_commit tracking configuration the the UI.
  • #3299 - Plugin Manager: Option to remove the settings and data of a plugin during plugin uninstall, on click and also to clean up any left overs from by now uninstalled plugins in the settings and data folders.
  • #3318 - Improve performance of the server side gcode interpreter.
  • #3326 - Adjust the toolbar color on Android based on the selected navbar background color.
  • #3342 - Prerender included markdown (AUTHORS.md, SUPPORTERS.md, THIRDPARTYLICENSES.md) and remove changelog (CHANGELOG.md) from About dialog, instead redirect to Github release page which has the full changelog.
  • Strip the remoteAddress from ClientOpened events pushed via the websocket to guests.
  • Loading animation to better communicate when the interface has actually successfully loaded and can be used. Can also be disabled via the settings.
  • Improved logging in case of plugin syntax errors.
  • Sanitized & reconfigured some HTTP headers:
    • X-Content-Type-Options is now set to nosniff
    • X-Frame-Options is not set to sameorigin unless configured otherwise
    • unused JSESSIONID cookie removed from SockJS
  • Clarify use of printer profile fields.
  • PMGR/SWU: Added flag to ignore the throttle state. Will allow people to circumvent the shoot-yourself-into-the-foot-countermeasures that prevent software updates & plugin installs while in a throttled state by editing config.yaml.
  • SWU: Do not persist check providers across reboots.
  • SWU: Add pypi_release version check type
  • SWU: Option to pip auto update right from within OctoPrint. Opt-in since pip updates can and have broken backwards compatibility in the past.
  • Tell users who have JavaScript disabled that OctoPrint's UI requires JS instead of presenting them with a non-functional interface.
  • Do not refresh site source on hard refresh if we are currently printing but print warning to log to use _refresh if it's actually required. See also #3344 for further discussion.
  • Various dependency updates. See also #1536.
  • Various documentation fixes and improvements. See also #2804, #3305, #3233, #3325, #3328.
  • Various typo fixes. See also #3297, #3330

Bug fixes

  • #3125 - Fix potential dead lock when cancelling an SD print.
  • #3202 - Fix a "dictionary changed size during iteration" error.
  • #3267 - Fix OctoPrint not attempting to autoconnect to printer if port is set to None (= AUTO)
  • #3278 - Plugin Manager: Disable plugin management while printer is busy (e.g. paused), not just when actively printing.
  • #3295 - SWU: Fix a link to the documentation.
  • #3301 - Fix a race condition in SD print detection that could cause a just cancelled print to "start again".
  • #3302 - Timelapse: "Save as default" checkbox should always be enabled, regardless of printer state.
  • #3309 - Fix overzealous filtering of history entries on the /printer/{tool|bed|chamber} API endpoints.
  • #3311 - Fix a wording issue.
  • #3319 - Virtual printer: Do not assume that an S parameter must be present on M220 (and then crash when it's not).
  • #3327 - Fix a wrong used HTTP status code on the /api/login endpoint.
  • #3334 - GCODE Viewer: Fix G2 and G3 arcs being misinterpreted.
  • #3335 - Fix another "dictionary changed size during iteration" error.
  • Fix syncing of commands with ok responses. Thanks to @KevinOConner for the idea. See also #2599.
  • Fix the unrendered timelapse list being visible when empty.
  • SockJS iframe fallback no longer embeds SockJS library from a CDN.
  • Aggressively escape return values of the server in the UI.

Special thanks to all the contributors!

Special thanks to everyone who contributed to this RC, especially to balassy, ByReaL, cameroncros, CapnBry, cbxbiker61, dforsi, eyal0, FHeilmann, jammi, justfalter, kantlivelong, kevans91, koenkooi, mkobler, noahsmartin, povlhp, razerraz, RyuzakiKK, Salandora, smurfix, tedder & ZachNo for their PRs!

More information

- Python
Published by foosel about 6 years ago

octoprint - 1.3.12 (stable)

Update from 2019-10-24: Heads-up if you have an MMU2

Some people have run into weird reset and loop issues with their MMU2 and OctoPrint 1.3.12. The cause of this - as far as the currently available information suggests - are simply misconfigured printer profiles inside OctoPrint.

If you have a multi-extruder setup like the MMU2, make sure your printer profile has configured all available extruders. In the case of the MMU2, you should have five extruders and a shared nozzle configured in OctoPrint. For an MMU it's four extruders and a shared nozzle.

Failure to properly setup your printer profile will cause issues!

Please take a look at this post for more details & a screenshot.

Heads-up if you are updating from OctoPrint < 1.3.6

Due to new versions of third party dependencies, this and future versions of OctoPrint will no longer update via the update script/python setup.py install that used to be OctoPrint's standard update mechanism in versions prior to 1.3.6, at least not in older Python environments as they can be found on e.g. OctoPi 0.14.

If you haven't yet updated from such a version (which you really should have done a long time ago) you'll need to update manually via command line.

Heads-up if you are still running OctoPi 0.14

As it is becoming increasingly complicated to make OctoPrint and its third party dependencies run in the by now ancient Python environment found on OctoPi 0.14, 1.3.12 will no longer allow to be updated from within OctoPrint on OctoPi 0.14 or a similarly outdated Python environment.

Either backup and migrate to a new version of OctoPi or run future updates manually.

See here for more information on the matter.

Improvements

  • #1239 & #3227 - Add command line interface for user management. Via octoprint user [list|add|remove|activate|deactivate|password] it is now possible to list, add, remove, activate & deactivate users or change their passwords right from the command line instead of just through the web interface. That should also make password recovery easier and as simple as octoprint user password username.
  • #2896 - Add confirmation dialog when removing a plugin (see also #3179).
  • #3075 - Calculate filament usage for all extruders in M605 duplicate/mirror setup (see also #3181).
  • #3101 - Support tags on GCODE script hook and add plugin:<plugin id> to script parts from plugins.
  • #2669 - Add option for disabling filters on search results in the file list (see also #3126).
  • #3131 - Allow subscribing to multiple events in one yaml based event subscription.
  • #3133 - Adjust wording in case of file upload errors to also hint at permission problems.
  • #3134 - Add support for logging in (and creating users) through REMOTE_USER header supplied by a reverse proxy in front of OctoPrint.
  • #3147 - Forcelogin: Add autofocus to the username
  • #3161 - Plugin manager: Reduce height of plugin list.
  • #3162 - Make closing behaviour of dialogs adjustable: default behaviour is to close on click outside of dialog, this can now be disabled.
  • #3167 - Make it configurable whether to perform the parity double open workaround on serial needed for (some?) debian based systems. Solves issues for FreeBSD systems & Klipper.
  • #3180 - Add button to terminal tab to clear the log.
  • #3188 - Suppress scary WebSocketClosedError messages in the log simply caused by closing the browser.
  • #3171 & #3204 - Action command prompts: Add close button to prompts triggered through action commands by the firmware, in case the firmware forgets to add action buttons.
  • #3174 - Include upload date & time in State panel to make file refreshs clearer.
  • #3191 - Docs: Clarify that a target temperature value of 0 turns heaters off.
  • #3198 - Clarify execution order of GCODE scripts.
  • #3199 - Hardening against corrupt print recovery data.
  • #3203 - Add documentation for printTimeLeftOrigin field.
  • #3206 - Better resilience against garbage on the line on initial connect to the printer due to more handshake attempts.
  • #3207 - Try to guess the mimetype if there is none during the webcam stream test.
  • #3218 - Small refactoring in comm layer
  • #3225 - Quote arguments in pip install to avoid issues with shells other than bash.
  • #3249 & #3263 - Printer profile events are now properly triggered.
  • #3250 - Add optional confirmation dialog for starting a print.
  • #3271 - Extend safemode to also disable third party language packs
  • Make emergency codes configurable.
  • Detect endless resend requests of the same line. If the printer keeps requesting the same line over and over again, something is either seriously wrong with the line or with the connection. In any case, log an error and disconnect.
  • Send M112 on disconnect due to an error (configurable) to try to disable heaters and such.
  • More type annotations throughout the code.
  • Re-add missing minHeight support to modals.
  • Ensure line breaks on copy of terminal contents.
  • Error Tracking: Further limit events that go out, this time by fqcn of callback methods, if needed.
  • GCODE viewer: Increase logging.
  • Plugin Manager: Prevent plugin installs while throttled due to undervoltage or overheating.
  • Software Update: Consider an empty restart command an unset one.
  • Software Update: Prevent updates while throttled due to undervoltage or overheating.
  • Tracking: Track plugins & versions once every 24h. This is a feature requested repeatedly by plugin developers and will also allow the compilation of something like a Top-10-list.
  • Tracking: Track slicing events

Bug fixes

  • #3022 & #3236 - Ignore NaN and Inf values in GCODE analysis result, don't allow NaN on APIs.
  • #3095 - Fix a small error in the frontend through bootstrap update.
  • #3096 - Fix handling of Empty exception in send loop.
  • #3104 - M112 and other emergency codes must always jump the internal command queue even when printing and be sent immediately.
  • #3107 - Prevent issues if hash field on file metadata is unset.
  • #3109 - Fix some unicode issues on the API.
  • #3114 - Virtual printer: Fix handling of closed connection.
  • #3137 - Do not invert axes in GCODE viewer. The axis inversion is only relevant to the control panel (depends on how the print head is positioned), NOT the rendition of the GCODE.
  • #3142 - Only do autologin if not actively logged out.
  • #3143 - Fix layers vanishing from GCODE viewer on settings access.
  • #3153 - Fix wrong variable name in an exception handler.
  • #3154 - Strip interface tags from IPv6 addresses in local address check.
  • #3155 - Backup: Make sure exclude is always a list.
  • #3156 - Tracking: Fix error if tracked time is None.
  • #3157 - Plugin manager: Better handling of unexpected repository format (e.g. in case of a misconfigured repository URL).
  • #3166 & #3211 - Fix caching behaviour in case of active wizards.
  • #3171 - Action command prompts: Remove prompts on disconnect from the printer.
  • #3176 - Forcelogin: Don't touch static endpoints.
  • #3177 - Always report all tools in shared nozzle setups to avoid inconsistencies.
  • #3190 - Plugin Manager: Refresh the repository list on cache timeout, not just on server restart and/or connectivity events.
  • #3194 & #3196 - Fix typo causing a KeyError on starting a second consecutive print of a file (see also #3195).
  • #3217 - Docs: Fix typo in chambers documentation
  • #3220 - Fix _long_running_command flag for M191 on comm layer.
  • #3224 - Fix file selection not being cleared in the frontend on printer disconnect.
  • #3247 - Fix scoping issue in JavaScript for custom commands with javascript/enabled fields.
  • #3253 - Software Update: Fix error in python version detection (see also #3256).
  • #3257 - Appkeys: Ignore empty username on request endpoint to avoid later issues.
  • #3270 - Properly escape translation strings in single/double quoted template locations
  • #3272 (regression) - GCODE viewer: Fix out-of-sync & layer slider issue
  • #3273 (regression) - Fix minimum pip version for OctoPi 0.15.1, which turns out is 9.0.3, not 10.0.1 as on OctoPi 0.15.0 due to a bug related version pin back then when.
  • #3277 (regression) - GCODE viewer: Fix huge memory consumption due to misplaced deep clone.
  • #3282 (regression) - Don't trigger M112 routine for firmware errors on a connection error when no connection has even been established yet. * Fix broken filtering of valid tools
  • Properly clear out user data from user management dialogs
  • Appkeys: Fix handling of empty request body, should return 400 Bad Request instead of 500 Internal Server Error.
  • Printer safety: Anycubic 1.1.2 is already safe (off by one error, used to only detect >1.1.2 instead of >=1.1.2)

Special thanks to all the contributors!

Special thanks to everyone who contributed to this release and provided full, analyzable bug reports and pull requests, especially @aliaksei135, @AndyQ, @dmweis, @esver, @gdombiak, @jackwilsdon, @JanneMantyharju, @kevans91, @pusewicz, @rfinnie and @tduehr for their PRs.

More information

- Python
Published by foosel over 6 years ago

octoprint - 1.3.12rc3 (release candidate)

⚠️ 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!

Heads-up for RC testers on OctoPi 0.15.1 with 1.3.12rc1

Those of you who are running OctoPi 0.15.1 and already updated to 1.3.12rc1 will either have to manually update their pip version to something >=10.0.1 or manually update to this second release candidate. I sadly made a mistake in the version limitations introduced to exclude OctoPi 0.14 and lower and thus OctoPrint 1.3.12rc1 won't allow to update itself on OctoPi 0.15.1 with stock pip version.

To manually update pip (via SSH):

source ~/oprint/bin/activate
pip install -U pip
sudo service octoprint restart

You might have to "Force Check for Update" in the Software Update plugin after this.

To manually update OctoPrint (via SSH):

source ~/oprint/bin/activate
pip install https://github.com/foosel/OctoPrint/archive/1.3.12rc3.zip
sudo service octoprint restart

Bug fixes

  • #3277 (regression) - GCODE viewer: Fix huge memory consumption due to misplaced deep clone.
  • #3282 (regression) - Don't trigger M112 routine for firmware errors on a connection error when no connection has even been established yet.

Special thanks to all the contributors!

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

More information

- Python
Published by foosel over 6 years ago

octoprint - 1.3.12rc2 (release candidate)

⚠️ 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!

Heads-up for RC testers on OctoPi 0.15.1 with 1.3.12rc1

Those of you who are running OctoPi 0.15.1 and already updated to 1.3.12rc1 will either have to manually update their pip version to something >=10.0.1 or manually update to this second release candidate. I sadly made a mistake in the version limitations introduced to exclude OctoPi 0.14 and lower and thus OctoPrint 1.3.12rc1 won't allow to update itself on OctoPi 0.15.1 with stock pip version.

To manually update pip (via SSH):

source ~/oprint/bin/activate
pip install -U pip
sudo service octoprint restart

You might have to "Force Check for Update" in the Software Update plugin after this.

To manually update OctoPrint (via SSH):

source ~/oprint/bin/activate
pip install https://github.com/foosel/OctoPrint/archive/1.3.12rc2.zip
sudo service octoprint restart

Improvements

  • #3271 - Extend safemode to also disable third party language packs

Bug fixes

  • #3270 - Properly escape translation strings in single/double quoted template locations
  • #3272 (regression) - GCODE viewer: Fix out-of-sync & layer slider issue
  • #3273 (regression) - Fix minimum pip version for OctoPi 0.15.1, which turns out is 9.0.3, not 10.0.1 as on OctoPi 0.15.0 due to a bug related version pin back then when.

Special thanks to all the contributors!

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

More information

- Python
Published by foosel over 6 years ago

octoprint - 1.3.12rc1 (release candidate)

⚠️ 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!

Heads-up if you are updating from OctoPrint < 1.3.6

Due to new versions of third party dependencies, this and future versions of OctoPrint will no longer update via the update script/python setup.py install that used to be OctoPrint's standard update mechanism in versions prior to 1.3.6, at least not in older Python environments as they can be found on e.g. OctoPi 0.14.

If you haven't yet updated from such a version (which you really should have done a long time ago) you'll need to update manually via command line.

Heads-up if you are still running OctoPi 0.14

As it is becoming increasingly complicated to make OctoPrint and its third party dependencies run in the by now ancient Python environment found on OctoPi 0.14, 1.3.12 will no longer allow to be updated from within OctoPrint on OctoPi 0.14 or a similarly outdated Python environment.

Either backup and migrate to a new version of OctoPi or run future updates manually.

See here for more information on the matter.

Improvements

  • #1239 & #3227 - Add command line interface for user management. Via octoprint user [list|add|remove|activate|deactivate|password] it is now possible to list, add, remove, activate & deactivate users or change their passwords right from the command line instead of just through the web interface. That should also make password recovery easier and as simple as octoprint user password username.
  • #2896 - Add confirmation dialog when removing a plugin (see also #3179).
  • #3075 - Calculate filament usage for all extruders in M605 duplicate/mirror setup (see also #3181).
  • #3101 - Support tags on GCODE script hook and add plugin:<plugin id> to script parts from plugins.
  • #2669 - Add option for disabling filters on search results in the file list (see also #3126).
  • #3131 - Allow subscribing to multiple events in one yaml based event subscription.
  • #3133 - Adjust wording in case of file upload errors to also hint at permission problems.
  • #3134 - Add support for logging in (and creating users) through REMOTE_USER header supplied by a reverse proxy in front of OctoPrint.
  • #3147 - Forcelogin: Add autofocus to the username
  • #3161 - Plugin manager: Reduce height of plugin list.
  • #3162 - Make closing behaviour of dialogs adjustable: default behaviour is to close on click outside of dialog, this can now be disabled.
  • #3167 - Make it configurable whether to perform the parity double open workaround on serial needed for (some?) debian based systems. Solves issues for FreeBSD systems & Klipper.
  • #3180 - Add button to terminal tab to clear the log.
  • #3188 - Suppress scary WebSocketClosedError messages in the log simply caused by closing the browser.
  • #3171 & #3204 - Action command prompts: Add close button to prompts triggered through action commands by the firmware, in case the firmware forgets to add action buttons.
  • #3174 - Include upload date & time in State panel to make file refreshs clearer.
  • #3191 - Docs: Clarify that a target temperature value of 0 turns heaters off.
  • #3198 - Clarify execution order of GCODE scripts.
  • #3199 - Hardening against corrupt print recovery data.
  • #3203 - Add documentation for printTimeLeftOrigin field.
  • #3206 - Better resilience against garbage on the line on initial connect to the printer due to more handshake attempts.
  • #3207 - Try to guess the mimetype if there is none during the webcam stream test.
  • #3218 - Small refactoring in comm layer
  • #3225 - Quote arguments in pip install to avoid issues with shells other than bash.
  • #3249 & #3263 - Printer profile events are now properly triggered.
  • #3250 - Add optional confirmation dialog for starting a print.
  • Make emergency codes configurable.
  • Detect endless resend requests of the same line. If the printer keeps requesting the same line over and over again, something is either seriously wrong with the line or with the connection. In any case, log an error and disconnect.
  • Send M112 on disconnect due to an error (configurable) to try to disable heaters and such.
  • More type annotations throughout the code.
  • Re-add missing minHeight support to modals.
  • Ensure line breaks on copy of terminal contents.
  • Error Tracking: Further limit events that go out, this time by fqcn of callback methods, if needed.
  • GCODE viewer: Increase logging.
  • Plugin Manager: Prevent plugin installs while throttled due to undervoltage or overheating.
  • Software Update: Consider an empty restart command an unset one.
  • Software Update: Prevent updates while throttled due to undervoltage or overheating.
  • Tracking: Track plugins & versions once every 24h. This is a feature requested repeatedly by plugin developers and will also allow the compilation of something like a Top-10-list.
  • Tracking: Track slicing events

Bug fixes

  • #3022 & #3236 - Ignore NaN and Inf values in GCODE analysis result, don't allow NaN on APIs.
  • #3095 - Fix a small error in the frontend through bootstrap update.
  • #3096 - Fix handling of Empty exception in send loop.
  • #3104 - M112 and other emergency codes must always jump the internal command queue even when printing and be sent immediately.
  • #3107 - Prevent issues if hash field on file metadata is unset.
  • #3109 - Fix some unicode issues on the API.
  • #3114 - Virtual printer: Fix handling of closed connection.
  • #3137 - Do not invert axes in GCODE viewer. The axis inversion is only relevant to the control panel (depends on how the print head is positioned), NOT the rendition of the GCODE.
  • #3142 - Only do autologin if not actively logged out.
  • #3143 - Fix layers vanishing from GCODE viewer on settings access.
  • #3153 - Fix wrong variable name in an exception handler.
  • #3154 - Strip interface tags from IPv6 addresses in local address check.
  • #3155 - Backup: Make sure exclude is always a list.
  • #3156 - Tracking: Fix error if tracked time is None.
  • #3157 - Plugin manager: Better handling of unexpected repository format (e.g. in case of a misconfigured repository URL).
  • #3166 & #3211 - Fix caching behaviour in case of active wizards.
  • #3171 - Action command prompts: Remove prompts on disconnect from the printer.
  • #3176 - Forcelogin: Don't touch static endpoints.
  • #3177 - Always report all tools in shared nozzle setups to avoid inconsistencies.
  • #3190 - Plugin Manager: Refresh the repository list on cache timeout, not just on server restart and/or connectivity events.
  • #3194 & #3196 - Fix typo causing a KeyError on starting a second consecutive print of a file (see also #3195).
  • #3217 - Docs: Fix typo in chambers documentation
  • #3220 - Fix _long_running_command flag for M191 on comm layer.
  • #3224 - Fix file selection not being cleared in the frontend on printer disconnect.
  • #3247 - Fix scoping issue in JavaScript for custom commands with javascript/enabled fields.
  • #3253 - Software Update: Fix error in python version detection (see also #3256).
  • #3257 - Appkeys: Ignore empty username on request endpoint to avoid later issues.
  • Fix broken filtering of valid tools
  • Properly clear out user data from user management dialogs
  • Appkeys: Fix handling of empty request body, should return 400 Bad Request instead of 500 Internal Server Error.
  • Printer safety: Anycubic 1.1.2 is already safe (off by one error, used to only detect >1.1.2 instead of >=1.1.2)

Special thanks to all the contributors!

Special thanks to everyone who contributed to this release candidate and provided full, analyzable bug reports and pull requests, especially @aliaksei135, @AndyQ, @dmweis, @esver, @gdombiak, @jackwilsdon, @JanneMantyharju, @kevans91, @pusewicz, @rfinnie and @tduehr for their PRs.

More information

- Python
Published by foosel over 6 years ago

octoprint - 1.3.11 (stable release)

Heads-up: 1.3.11 unbundles the Cura plugin

If you rely on the Cura Plugin for your workflow that so far was bundled with OctoPrint, be sure to install the Cura Legacy plugin that's now also available on the plugin repository.

Once installed the Cura Legacy plugin will import the settings and profiles from the former bundled Cura plugin automatically on first start.

Improvements

  • #1938 - Allow slicing parallel to printing on machines with more than one core.
  • #2462 - Also scan and process watched folder on startup, not just during runtime.
  • #2900 - Add new hook octoprint.printer.sdcardupload to allow plugins to override default way to upload files to the printer's SD card.
  • #2904 - Added new command line switches -4 and -6 to restrict binding of the server to IPv4 or v6 respectively.
  • #2905 - Use maximum of communication & temperature timeout as serial timeout to avoid issues if the user has set a longer temperature reporting interval than (busy) communication timeout.
  • #2945 - Adjust default regex for filtering temperature requests and responses to not filter some M115 responses as well. New regex is (Send: (N\d+\s+)?M105)|(Recv:\s+(ok\s+((P|B|N)\d+\s+)*)?(B|T\d*):\d+). If you modified your terminal filters you'll have to update that manually.
  • #2947 - Printer safety check plugin: Disable warning for Monoprice Select Mini V2 with firmware v4.1+.
  • #2953 - GCODE Viewer: Bring back the total number of printed layers.
  • #2962 - Logging: deletion confirmation and bulk delete for log file management.
  • #2965 - Add new hook octoprint.events.register_custom_events to allow plugins to cleanly add custom events by plugins.
  • #2970 - Add configurable list of commands that should never be sent to the printer, and a configurable list of commands on which OctoPrint should pause the current print job. Allows more granular configuration of behaviour of M0, M1 and M25.
  • #2974 - Dedicated checkboxes to enable/disable webcam & timelapse functionality instead of relying on empty URLs.
  • #2976 - Correctly identify v6 representations of v4 networks for auto login. Also correctly identify ::1 as local network.
  • #2978 - Use module name instead of plugin identifier when loading plugins from entry points. Also load bundled plugins under octoprint.plugins.* instead of their identifier.
  • #2982 - Log user activity of who started/paused/resumed/cancelled the current print. Include owner of a print job in event data and log.
  • #2983 - Add clear button to filter box in file list.
  • #2986 - Forcelogin plugin: Make login page responsive.
  • #2988 - Add --disable-pip-version-check to pip calls to stop pip's tendency to confuse people with it's update nag messages.
  • #2997 - Forcelogin plugin: Accept authentication through API key and/or authorization headers.
  • #3010 - Add usage information for all folders to the API.
  • #3014 - Hardening against corrupt language packs.
  • #3023 - Hardening against corrupt preemptive caching configurations.
  • #3030 - Backup plugin: Change name of generated backup file to have an octoprint- prefix. See also #3039.
  • #3033 - Open serial port in exclusive mode. See also #3036.
  • #3038 - Detect Klipper firmware and adjust serial communication settings accordingly.
  • #3040 - Add setting to disable fuzzy estimation display in the UI.
  • #3049 - Workaround for broken PEP440 non-compliant Python version numbers under Debian. See also #3054.
  • #3051 - Always show unfuzzy total print time and print left in a tooltip.
  • #3055 - GCODE Viewer: Add ability to preview the current layer to be drawn.
  • #3057 - Performance improvements in file management operations & more aggressive cleanup of stale metadata.
  • #3066 - Docs: Add missing documentation about state in jobs endpoint on API.
  • #3072 - Hide temperature tab for machines with neither heated bed nor extruders.
  • #3073 - Hide tool section in "Control" tab for machines with no extruders.
  • #3074 - Updated several dependencies to newer versions.
  • Add elapsed time and reason for failure to PrintFailed event.
  • Add trigger_event parameter to Settings.save and PluginSettings.save to trigger SettingsUpdated event on save of settings.
  • Simplify configuration change handling of wizards.
  • Minimum Python version is now 2.7.9.
  • Create a backup of working config.yaml after successful startup.
  • Detect incomplete startups and set safe mode flag for next startup.
  • Always show actual temperature as received from printer instead of "off" for very low temperatures. That way people will hopefully no longer blame OctoPrint for MINTEMP errors triggered by their firmware because it "can't handle temperatures under 10°C".
  • Add full version string OctoPrint <version> to API.
  • Add systemd unit file.
  • Deprecate appkey API in favor of new bundled Application Keys Plugin. AFAIK was never used by anyone anyhow.
  • Take bundle status into account for plugin sorting, bundled plugins should always win before not bundled plugins if no sorting key is provided.
  • Load generic templates after JavaScript assets, making it possible to reference already loaded libraries in any injected generic templates.
  • Hardening against callback errors in decorators on default view.
  • Unbundled the Cura plugin. It lives on as "Cura Legacy" at OctoPrint/OctoPrint-CuraLegacy and will also be available on the plugin repository.
  • Hardening against invalid SD status reports.
  • Cleanup now obsolete metadata.yaml files.
  • Use monotonic_time for relative times everywhere.
  • Support for heated chamber firmware capabilities.
  • Remove UI_API_KEY and API disabling. With the inclusion of the ForceLogin plugin that doesn't serve a real purpose anymore in most cases, and it was only ever more of a rate limiting feature than an actual security measure anyhow. Plus it lead to a ton of false security alarms.
  • More resilience against broken configurations.
  • More resilience against platform startup issues during environment detection.
  • Don't confuse users with current pip's "Python 2.7 is EOL" messages
  • Define empty UI_API_KEY for backwards compatibility with third party plugins
  • Add config flag server.ignoredIncompleteStartup to override incomplete startup detection
  • Hardening against errors triggered during print time estimation
  • Introduce setting to disable exclusive claim on serial port. There might be issues with this out there in the field, so having the option to disable it is a good thing.
  • Docs: Improve docs of connection API to avoid issues as encountered in #3043.
  • Action Command Prompt plugin: Set M876 as default command as discussed in MarlinFirmware/Marlin#12982.
  • Action Command Prompt plugin: Add M876 to EMERGENCY_PARSER compliant commands, if configured accordingly. See also MarlinFirmware/Marlin#12982.
  • Action Command Prompt plugin: Signal support for action command prompts to firmware via M876 P1, if configured accordingly. See also MarlinFirmware/Marlin#12982.
  • Action Command Prompt plugin: Properly handle PROMPT_SUPPORT capability report from firmware and configure action command prompt support accordingly. See also MarlinFirmware/Marlin#12982.
  • Error Tracking plugin: New plugin utilizing sentry.io to track any kind of errors thrown in either backend or the default UI. Will ship disabled by default, has to be enabled by the user. Release Candidates will prompt users to enable it in order to improve on error detection during RC phase.
  • Error Tracking: Severely restrict what gets tracked:
    • we are only interested in handled core exceptions or unhandled exceptions
    • we are not interested at all in SerialException
  • Error Tracking: Further restriction of what gets tracked
  • Forcelogin plugin: Set sorting key to 0 to increase likelihood of coming before alternative UIs.
  • Forcelogin plugin: Add favicon meta tags.
  • Plugin Manager plugin, Softwareupdate plugin: Use scrollables instead of pagination.
  • Printer Safety Check plugin: Add version restriction to Anycubic check.
  • Tracking plugin: Add elapsed time and reason for failure to print_failed event.
  • Tracking plugin: Add elapsed time to print_cancelled event.
  • Tracking plugin: Track firmware/communication errors.
  • Tracking plugin: Track printer safety warnings.
  • Tracking plugin: Track uptime of OctoPrint in ping event.

Bug fixes

  • #1881 - Another attempt at fixing the hard to intentionally reproduce issue where all API endpoints start returning 403 responses. Caching headers have been adjusted and API key handling has been changed, which might fix things.
  • #2859 - Fix for used port and baudrate to not be properly reflected on the UI.
  • #2916 - Possible workaround for a rare issue with the bundled Tornado dependency when running OctoPrint under Windows.
  • #2954 - Backup plugin: Fix an issue with calculation of available free space.
  • #2955 - Fix handling of action:resume or action:resumed received during PAUSING and handling of action:pause or action:paused received during RESUMING. Fix PAUSING state not allowing a resume to proceed. See also MarlinFirmware/Marlin#12982.
  • #2959 - Enforce max height smaller than available viewport for notifications so that they cannot scroll out of the screen.
  • #2967 - Tracking plugin: Fix exception caused on printer events when tracking is disabled and no UUID is thus set.
  • #2971 - Forcelogin plugin: Fix "remember me" not working as advertised. See also #2973.
  • #2992 - Backup plugin: Use shutil.move instead of os.rename and thus avoid issues with certain filesystem configurations. See also #2993.
  • #2996 - Use non-blocking writes on serial communication to avoid select blocking issues under certain conditions. See also #3004.
  • #3001 - Fix a race condition in SD printing detection.
  • #3012 - Fix a unicode vs ASCII bug in translating plugins.
  • #3024 - Fix inconsistent behaviour of CORS support on the API regarding static routes and the socket.
  • #3029 & #3045 & #3061 - Fix issues in the German translation
  • #3053 - GCODE Viewer: Fix an issue with multi extruder files where only a higher extruder index is actually used and all prior ones are undefined.
  • #3080 - Virtual Printer plugin: Fix tracking of negative movements and homing.
  • #3071 - Application Keys plugin: Fix appkeys not working when access control is disabled.
  • #3088 (regression) - Fix 500 error on index rendering in case of plugins that use unicode in plugin vars.
  • #3089 (regression) - Fix missing _chamberTemp definition
  • #3090 (regression) - Fix missing method causing an exception on /api/printer/tool endpoint
  • #3091 (regression) - Printer Safety Check: Fix unicode errors in certain communication scenarios.
  • #3092 - Fix invalid tool parameter detection on /api/printer/tool endpoint.
  • #3098 - Backup: Exclude temporary timelapse files as well if timelapses are excluded from backup.
  • #3105 (regression) - Virtual printer: Fix an encoding issue
  • #3108 (regression) - Fix bug in port detection
  • #3111 (regression) - Refresh port list after disconnect to detect vanishing ports
  • #3115 (regression) - Fix extra newlines in serial.log and empty lines on terminal
  • #3116 - Fix potential division by zero
  • Fix a typo in an error message during startup.
  • paused action command must not trigger any local processing. See also MarlinFirmware/Marlin#12982.
  • Only use page size from local storage in ItemListHelper if configured.
  • Fix caching headers on main view.
  • Fix missing default value for self._errorValue in comm layer.
  • Don't read return code on async system commands, it won't work.
  • Fix wrong textual representation of STARTING state
  • Fix some potential encoding errors in the comm layer
  • Fix for the file list in the UI not getting refreshed after an SD list refresh from the printer.
  • Docs: Fix documentation for firmware info & capability plugin hooks.
  • Docs: Fix a formatting issue in the event docs, making it seem like events were deprecated when it was only payload entries that are deprecated.
  • Forcelogin plugin: Never handle the UI if ACL is disabled.
  • Tracking plugin: Fix tracking not starting fully if enabled during runtime.
  • Tracking plugin: Fix handling of missing print time. See also #3063.

Special thanks to all the contributors!

Special thanks to everyone who contributed to this release, especially @agrif, @akraus53, @AndyQ, @CapnBry, @DanielJoyce, @devildant, @Fabi0San, @fake-name, @fieldOfView, @gloomyandy, @HarlemSquirrel, @hgross, @jubaleth, @melgish, @rgriebl and @tedder for their PRs.

More information

- Python
Published by foosel almost 7 years ago

octoprint - 1.3.11rc3 (release candidate)

⚠️ 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

  • Don't confuse users with current pip's "Python 2.7 is EOL" messages
  • Define empty UI_API_KEY for backwards compatibility with third party plugins
  • Add config flag server.ignoredIncompleteStartup to override incomplete startup detection
  • Hardening against errors triggered during print time estimation
  • Introduce setting to disable exclusive claim on serial port. There might be issues with this out there in the field, so having the option to disable it is a good thing.
  • Error Tracking: Further restriction of what gets tracked

Bug fixes

  • #3105 (regression) - Virtual printer: Fix an encoding issue
  • #3108 (regression) - Fix bug in port detection
  • #3111 (regression) - Refresh port list after disconnect to detect vanishing ports
  • #3115 (regression) - Fix extra newlines in serial.log and empty lines on terminal
  • #3116 - Fix potential division by zero
  • Fix wrong textual representation of STARTING state
  • Fix some potential encoding errors in the comm layer
  • Fix for the file list in the UI not getting refreshed after an SD list refresh from the printer.

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, analyzable bug reports.

More information

- Python
Published by foosel almost 7 years ago

octoprint - 1.3.11rc2 (release candidate)

⚠️ 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 broken configurations.
  • More resilience against platform startup issues during environment detection.
  • Error Tracking: Severely restrict what gets tracked:
    • we are only interested in handled core exceptions or unhandled exceptions
    • we are not interested at all in SerialException

Bug fixes

  • #3088 (regression) - Fix 500 error on index rendering in case of plugins that use unicode in plugin vars.
  • #3089 (regression) - Fix missing _chamberTemp definition
  • #3090 (regression) - Fix missing method causing an exception on /api/printer/tool endpoint
  • #3091 (regression) - Printer Safety Check: Fix unicode errors in certain communication scenarios.
  • #3092 - Fix invalid tool parameter detection on /api/printer/tool endpoint.
  • #3098 - Backup: Exclude temporary timelapse files as well if timelapses are excluded from backup.
  • Fix missing default value for self._errorValue in comm layer.
  • Don't read return code on async system commands, it won't work.

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 and provided full, analysable bug reports.

More information

- Python
Published by foosel almost 7 years ago

octoprint - 1.3.11rc1 (release candidate)

⚠️ 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!

Heads-up: 1.3.11 unbundles the Cura plugin

If you rely on the Cura Plugin for your workflow that so far was bundled with OctoPrint, be sure to install the Cura Legacy plugin that's now also available on the plugin repository.

Once installed the Cura Legacy plugin will import the settings and profiles from the former bundled Cura plugin automatically on first start.

Heads-up: 1.3.11 bundles a new Error Tracking plugin, please enable it on Release Candidates

The Error Tracking plugin is a completely separate plugin from the existing Anonymous Usage Tracking plugin. Its tracking is disabled by default. Its purpose is to collect error information from instances in order to allow better issue analysis especially during the Release Candidate phase, or when prompted after reporting a bug. Thus it will also ask you to enable it on start while subscribed to an RC release channel.

The plugin uses a sentry.io instance, kindly provided to OctoPrint by sentry.io.

Improvements

  • #1938 - Allow slicing parallel to printing on machines with more than one core.
  • #2462 - Also scan and process watched folder on startup, not just during runtime.
  • #2900 - Add new hook octoprint.printer.sdcardupload to allow plugins to override default way to upload files to the printer's SD card.
  • #2904 - Added new command line switches -4 and -6 to restrict binding of the server to IPv4 or v6 respectively.
  • #2905 - Use maximum of communication & temperature timeout as serial timeout to avoid issues if the user has set a longer temperature reporting interval than (busy) communication timeout.
  • #2945 - Adjust default regex for filtering temperature requests and responses to not filter some M115 responses as well. New regex is (Send: (N\d+\s+)?M105)|(Recv:\s+(ok\s+((P|B|N)\d+\s+)*)?(B|T\d*):\d+). If you modified your terminal filters you'll have to update that manually.
  • #2947 - Printer safety check plugin: Disable warning for Monoprice Select Mini V2 with firmware v4.1+.
  • #2953 - GCODE Viewer: Bring back the total number of printed layers.
  • #2962 - Logging: deletion confirmation and bulk delete for log file management.
  • #2965 - Add new hook octoprint.events.register_custom_events to allow plugins to cleanly add custom events by plugins.
  • #2970 - Add configurable list of commands that should never be sent to the printer, and a configurable list of commands on which OctoPrint should pause the current print job. Allows more granular configuration of behaviour of M0, M1 and M25.
  • #2974 - Dedicated checkboxes to enable/disable webcam & timelapse functionality instead of relying on empty URLs.
  • #2976 - Correctly identify v6 representations of v4 networks for auto login. Also correctly identify ::1 as local network.
  • #2978 - Use module name instead of plugin identifier when loading plugins from entry points. Also load bundled plugins under octoprint.plugins.* instead of their identifier.
  • #2982 - Log user activity of who started/paused/resumed/cancelled the current print. Include owner of a print job in event data and log.
  • #2983 - Add clear button to filter box in file list.
  • #2986 - Forcelogin plugin: Make login page responsive.
  • #2988 - Add --disable-pip-version-check to pip calls to stop pip's tendency to confuse people with it's update nag messages.
  • #2997 - Forcelogin plugin: Accept authentication through API key and/or authorization headers.
  • #3010 - Add usage information for all folders to the API.
  • #3014 - Hardening against corrupt language packs.
  • #3023 - Hardening against corrupt preemptive caching configurations.
  • #3030 - Backup plugin: Change name of generated backup file to have an octoprint- prefix. See also #3039.
  • #3033 - Open serial port in exclusive mode. See also #3036.
  • #3038 - Detect Klipper firmware and adjust serial communication settings accordingly.
  • #3040 - Add setting to disable fuzzy estimation display in the UI.
  • #3049 - Workaround for broken PEP440 non-compliant Python version numbers under Debian. See also #3054.
  • #3051 - Always show unfuzzy total print time and print left in a tooltip.
  • #3055 - GCODE Viewer: Add ability to preview the current layer to be drawn.
  • #3057 - Performance improvements in file management operations & more aggressive cleanup of stale metadata.
  • #3066 - Docs: Add missing documentation about state in jobs endpoint on API.
  • #3072 - Hide temperature tab for machines with neither heated bed nor extruders.
  • #3073 - Hide tool section in "Control" tab for machines with no extruders.
  • #3074 - Updated several dependencies to newer versions.
  • Add elapsed time and reason for failure to PrintFailed event.
  • Add trigger_event parameter to Settings.save and PluginSettings.save to trigger SettingsUpdated event on save of settings.
  • Simplify configuration change handling of wizards.
  • Minimum Python version is now 2.7.9.
  • Create a backup of working config.yaml after successful startup.
  • Detect incomplete startups and set safe mode flag for next startup.
  • Always show actual temperature as received from printer instead of "off" for very low temperatures. That way people will hopefully no longer blame OctoPrint for MINTEMP errors triggered by their firmware because it "can't handle temperatures under 10°C".
  • Add full version string OctoPrint <version> to API.
  • Add systemd unit file.
  • Deprecate appkey API in favor of new bundled Application Keys Plugin. AFAIK was never used by anyone anyhow.
  • Take bundle status into account for plugin sorting, bundled plugins should always win before not bundled plugins if no sorting key is provided.
  • Load generic templates after JavaScript assets, making it possible to reference already loaded libraries in any injected generic templates.
  • Hardening against callback errors in decorators on default view.
  • Unbundled the Cura plugin. It lives on as "Cura Legacy" at OctoPrint/OctoPrint-CuraLegacy and will also be available on the plugin repository.
  • Hardening against invalid SD status reports.
  • Cleanup now obsolete metadata.yaml files.
  • Use monotonic_time for relative times everywhere.
  • Support for heated chamber firmware capabilities.
  • Remove UI_API_KEY and API disabling. With the inclusion of the ForceLogin plugin that doesn't serve a real purpose anymore in most cases, and it was only ever more of a rate limiting feature than an actual security measure anyhow. Plus it lead to a ton of false security alarms.
  • Docs: Improve docs of connection API to avoid issues as encountered in #3043.
  • Action Command Prompt plugin: Set M876 as default command as discussed in MarlinFirmware/Marlin#12982.
  • Action Command Prompt plugin: Add M876 to EMERGENCY_PARSER compliant commands, if configured accordingly. See also MarlinFirmware/Marlin#12982.
  • Action Command Prompt plugin: Signal support for action command prompts to firmware via M876 P1, if configured accordingly. See also MarlinFirmware/Marlin#12982.
  • Action Command Prompt plugin: Properly handle PROMPT_SUPPORT capability report from firmware and configure action command prompt support accordingly. See also MarlinFirmware/Marlin#12982.
  • Error Tracking plugin: New plugin utilizing sentry.io to track any kind of errors thrown in either backend or the default UI. Will ship disabled by default, has to be enabled by the user. Release Candidates will prompt users to enable it in order to improve on error detection during RC phase.
  • Forcelogin plugin: Set sorting key to 0 to increase likelihood of coming before alternative UIs.
  • Forcelogin plugin: Add favicon meta tags.
  • Plugin Manager plugin, Softwareupdate plugin: Use scrollables instead of pagination.
  • Printer Safety Check plugin: Add version restriction to Anycubic check.
  • Tracking plugin: Add elapsed time and reason for failure to print_failed event.
  • Tracking plugin: Add elapsed time to print_cancelled event.
  • Tracking plugin: Track firmware/communication errors.
  • Tracking plugin: Track printer safety warnings.
  • Tracking plugin: Track uptime of OctoPrint in ping event.

Bug fixes

  • #1881 - Another attempt at fixing the hard to intentionally reproduce issue where all API endpoints start returning 403 responses. Caching headers have been adjusted and API key handling has been changed, which might fix things.
  • #2859 - Fix for used port and baudrate to not be properly reflected on the UI.
  • #2916 - Possible workaround for a rare issue with the bundled Tornado dependency when running OctoPrint under Windows.
  • #2954 - Backup plugin: Fix an issue with calculation of available free space.
  • #2955 - Fix handling of action:resume or action:resumed received during PAUSING and handling of action:pause or action:paused received during RESUMING. Fix PAUSING state not allowing a resume to proceed. See also MarlinFirmware/Marlin#12982.
  • #2959 - Enforce max height smaller than available viewport for notifications so that they cannot scroll out of the screen.
  • #2967 - Tracking plugin: Fix exception caused on printer events when tracking is disabled and no UUID is thus set.
  • #2971 - Forcelogin plugin: Fix "remember me" not working as advertised. See also #2973.
  • #2992 - Backup plugin: Use shutil.move instead of os.rename and thus avoid issues with certain filesystem configurations. See also #2993.
  • #2996 - Use non-blocking writes on serial communication to avoid select blocking issues under certain conditions. See also #3004.
  • #3001 - Fix a race condition in SD printing detection.
  • #3012 - Fix a unicode vs ASCII bug in translating plugins.
  • #3024 - Fix inconsistent behaviour of CORS support on the API regarding static routes and the socket.
  • #3029 & #3045 & #3061 - Fix issues in the German translation
  • #3053 - GCODE Viewer: Fix an issue with multi extruder files where only a higher extruder index is actually used and all prior ones are undefined.
  • #3080 - Virtual Printer plugin: Fix tracking of negative movements and homing.
  • #3071 - Application Keys plugin: Fix appkeys not working when access control is disabled.
  • Fix a typo in an error message during startup.
  • paused action command must not trigger any local processing. See also MarlinFirmware/Marlin#12982.
  • Only use page size from local storage in ItemListHelper if configured.
  • Fix caching headers on main view.
  • Docs: Fix documentation for firmware info & capability plugin hooks.
  • Docs: Fix a formatting issue in the event docs, making it seem like events were deprecated when it was only payload entries that are deprecated.
  • Forcelogin plugin: Never handle the UI if ACL is disabled.
  • Tracking plugin: Fix tracking not starting fully if enabled during runtime.
  • Tracking plugin: Fix handling of missing print time. See also #3063.

Special thanks to all the contributors!

Special thanks to everyone who contributed to this release candidate, especially @agrif, @akraus53, @AndyQ, @CapnBry, @DanielJoyce, @devildant, @Fabi0San, @fake-name, @fieldOfView, @gloomyandy, @HarlemSquirrel, @hgross, @jubaleth, @melgish, @rgriebl and @tedder for their PRs.

More information

- Python
Published by foosel almost 7 years ago

octoprint - 1.3.10 (stable)

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

- Python
Published by foosel about 7 years ago

octoprint - 1.3.10rc4 (release candidate)

⚠️ 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

- Python
Published by foosel about 7 years ago

octoprint - 1.3.10rc3 (release candidate)

⚠️ 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

- Python
Published by foosel about 7 years ago

octoprint - 1.3.10rc2 (release candidate)

⚠️ 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

- Python
Published by foosel over 7 years ago

octoprint - 1.3.10rc1 (release candidate)

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

- Python
Published by foosel over 7 years ago

octoprint - 1.3.9 (stable)

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

- Python
Published by foosel over 7 years ago

octoprint - 1.3.9rc4 (release candidate)

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

- Python
Published by foosel over 7 years ago

octoprint - 1.3.9rc3 (release candidate)

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

- Python
Published by foosel over 7 years ago

octoprint - 1.3.9rc2 (release candidate)

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

- Python
Published by foosel over 7 years ago

octoprint - 1.3.9rc1 (release candidate)

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

- Python
Published by foosel over 7 years ago

octoprint - 1.3.8 (stable)

Bug fixes

  • #2577 - pin psutil dependency to version 5.4.3 since 5.4.4 as released today introduces a breaking change.

More information

  • Commits
  • Release Candidates:
    • None since this constitutes a hotfix release to fix an issue with the newest version of a third party dependency.

- Python
Published by foosel almost 8 years ago

octoprint - 1.3.7 (stable)

Improvements

  • #324 & #2414 - Native support for the following @ commands: @pause (pauses the print), @resume (resumes the print), @cancel or @abort (cancels the print). More commands can be added through the plugin hooks octoprint.comm.protocol.atcommand.*.
  • #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.error to allow plugins to override OctoPrint's handling of Error:/!! 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 octoprint.util.ResettableTimer helper class.
  • #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 T commands.
  • #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 M27 with 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 file or respond to M27 with Not SD printing when 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 //action:cancel action command.
  • #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 accessControl.trustBasicAuthentication and accessControl.checkBasicAuthenticationPassword settings.
  • #2338 - Allowed plugins to define GCODE script variables using the octoprint.comm.protocol.scripts hook.
  • #2406 - Extracted log management into its own bundled plugin and allow fine tuning of log levels.
  • #2409 - Added m4v and mkv to the list of accepted timelapse extensions.
  • #2444 - Support additional CSS classes on custom control buttons.
  • #2448 - Also detect plugins in ~/.octoprint/plugins that are provided as bytecode pyc instead of source py files.
  • #2455 - Added option to configure SSL validation for snapshot URL.
  • Support M114 response 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 busy protocol 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: busy protocol, 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_phases that if set to DEBUG will log the lifecycle of commands through the comm layer including tags to octoprint.log. See also the docs here.
  • Added new job_on_hold and set_job_on_hold methods 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 frozendict for internal printer state propagation in an attempt to narrow down on #1951. Should frozendict cause issues it can be disabled through the settings in config.yaml, just set devel.useFrozenDictForPrinterState to false
  • Log comm state changes to octoprint.log.
  • Added a regular server heartbeat to the log (every 15min).
  • Support SD status auto report by the firmware.
  • Added Not SD printing to default "SD status" terminal filters.
  • Added custom readline implementation for the serial port. Instead of relying on PySerial's readline that 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 callViewModelIf doesn't try to call null or uncallable methods.
  • Added links to the new Community Forum and the new location of the FAQ.
  • Improved pip utility logging, LocalPipHelper wasn'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.log on update errors in log and notification.

Bugfixes

  • #2294 - Improved resilience against errors during gathering the file list (e.g. permission errors)
  • #2296 - Fixed X-Forwarded-For handling in Flask Login through monkey patched backport.
  • #2297 - Return 403 instead of 401 on 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 500 on 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 pip with 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 showTab JS function of about dialog.
  • #2426 - Made resend logging to octoprint.log unicode safe
  • #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 undefined values 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 printer.get_current_data and printer.get_current_job returning frozendict instead of dict instances, 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/slicing in case of an unconfigured slicer.
  • #2524 - Ignore wait while 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 /sockjs/websocket (instead of /sockjs/<server_id>/<session_id>/websocket).
  • #2546 (regression) - Fix the PRINT_FAILED event getting triggered twice on print failure due to disconnect
  • Use pkg_resources to 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.main approach of calling pip in the PipCaller the last resort during auto detection, only after trying pip or pip.exe inside the same folder as the Python executable.
  • Use octoprint.util.monotonic_time instead of monotonic.monotonic in comm layer.
  • Fixed timelapse not stopping on print failure due to firmware error due to missing PrintFailed event.
  • 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.
  • Have OctoPrintJsonEncoder fall 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)

Known bugs

  • #2547 - Error during processing of afterPrintJobDone script will trigger PRINTFAILED event even though PRINTDONE event was already triggered

More Information

- Python
Published by foosel almost 8 years ago

octoprint - 1.3.7rc4 (release candidate)

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!

Bugfixes

  • #2536 - Fix a wrong state tracking when starting an SD print through the controller, causing a disconnect due to a timeout.
  • #2544 - Fix an exception when connecting to the raw websocket at /sockjs/websocket (instead of /sockjs/<server_id>/<session_id>/websocket).
  • #2546 - Fix the PRINT_FAILED event getting triggered twice on print failure due to disconnect

(Commits)

- Python
Published by foosel almost 8 years ago

octoprint - 1.3.7rc3 (release candidate)

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!

Bugfixes

  • #2524 - Ignore wait while job is on hold.

(Commits)

- Python
Published by foosel almost 8 years ago

octoprint - 1.3.7rc2 (release candidate)

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!

Bugfixes

  • #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.
  • #2494 - Fixed undefined values not saving in the settings.
  • #2499 - Fixed communication error notification lacking the actual error message.
  • #2501 - Fixed a bug causing log downloads to fail with an HTTP 500 error.
  • #2506 - Fixed printer.get_current_data and printer.get_current_job returning frozendict instead of dict instances, causing issues with plugins relying on being able to modify the returned data (e.g. dattas/OctoPrint-DetailedProgress#26).
  • #2508 - Fixed HTTP 500 error on /api/slicing in case of an unconfigured slicer.
  • Have OctoPrintJsonEncoder fall back to regular flask JSON encoder, otherwise we might not be able to serialize some data types we need to be able to serialize.
  • Use pkg_resources to 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.main approach of calling pip in the PipCaller the last resort during auto detection, only after trying pip or pip.exe inside the same folder as the Python executable.
  • Use octoprint.util.monotonic_time instead of monotonic.monotonic in comm layer.
  • Fixed timelapse not stopping on print failure due to firmware error due to missing PrintFailed event.

(Commits)

- Python
Published by foosel almost 8 years ago

octoprint - 1.3.7rc1 (release candidate)

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

  • #324 & #2414 - Native support for the following @ commands: @pause (pauses the print), @resume (resumes the print), @cancel or @abort (cancels the print). More commands can be added through the plugin hooks octoprint.comm.protocol.atcommand.*.
  • #2208 - New plugin hook octoprint.comm.protocol.gcode.error to allow plugins to override OctoPrint's handling of Error:/!! 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 octoprint.util.ResettableTimer helper class.
  • #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 T commands.
  • #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 M27 with 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.
  • #2362 - Added option to configure timelapse snapshot timeout.
  • #2367 - Added support for //action:cancel action command.
  • #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 accessControl.trustBasicAuthentication and accessControl.checkBasicAuthenticationPassword settings.
  • #2338 - Allowed plugins to define GCODE script variables using the octoprint.comm.protocol.scripts hook.
  • #2406 - Extracted log management into its own bundled plugin and allow fine tuning of log levels.
  • #2409 - Added m4v and mkv to the list of accepted timelapse extensions.
  • #2444 - Support additional CSS classes on custom control buttons.
  • #2448 - Also detect plugins in ~/.octoprint/plugins that are provided as bytecode pyc instead of source py files.
  • #2455 - Added option to configure SSL validation for snapshot URL.
  • Support M114 response 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 busy protocol 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: busy protocol, 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_phases that if set to DEBUG will log the lifecycle of commands through the comm layer including tags to octoprint.log. See also the docs here.
  • Added new job_on_hold and set_job_on_hold methods 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 frozendict for internal printer state propagation in an attempt to narrow down on #1951. Should frozendict cause issues it can be disabled through the settings in config.yaml, just set devel.useFrozenDictForPrinterState to false
  • Log comm state changes to octoprint.log.
  • Added a regular server heartbeat to the log (every 15min).
  • Support SD status auto report by the firmware.
  • Added Not SD printing to default "SD status" terminal filters.
  • Added custom readline implementation for the serial port. Instead of relying on PySerial's readline that 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 callViewModelIf doesn't try to call null or uncallable methods.
  • Added links to the new Community Forum and the new location of the FAQ.
  • Improved pip utility logging, LocalPipHelper wasn'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.log on update errors in log and notification.

Bugfixes

  • #2294 - Improved resilience against errors during gathering the file list (e.g. permission errors)
  • #2296 - Fixed X-Forwarded-For handling in Flask Login through monkey patched backport.
  • #2297 - Return 403 instead of 401 on missing/insufficient credentials.
  • #2311 - Fixed server not auto connecting on startup if port is set to AUTO (see also #2337).
  • #2316 - Check for valid queue entry in file analysis queue before trying to dequeue, fix for a HTTP 500 on 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 with an unsupported extension
  • #2333 (Part 1/3) - Workaround for an update problem caused by interaction of pip with 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 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 showTab JS function of about dialog.
  • #2426 - Made resend logging to octoprint.log unicode safe
  • #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.
  • 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.

(Commits)

- Python
Published by foosel almost 8 years ago

octoprint - 1.3.6 (stable)

Note for upgraders and plugin authors: Change in the bundling of JS assets can lead to issues in plugins

A change to solve issues with plugins bundling JS assets that cause interference with other plugins (e.g. through the declaration of "use strict") and in general to add better isolation and error handling might cause errors for some plugins that go beyond your run-off-the-mill view model and also implicitly declare new globals.

If you happen to run into any such issues, you can switch back to the old way of bundling JS assets via the newly introduced "Settings > Feature > Enable legacy plugin asset bundling" toggle (check it, save the settings, restart the server). This is provided to allow for a minimally invasive adjustment period until affected plugins have been updated.

You can find out more about the change, how to know if a plugin is even affected and what do about it on the OctoBlog.

Improvements

  • #203 - Allow selecting the current tab via URL hashs. Also update URL hash when switching tabs, thus adding this to the browser history and allowing quicker back and forth navigation through the browser's back and forward buttons.
  • #1026 - Automatically upper case parameters in GCODE commands sent from the Terminal tab. A black list is in place that prevent upper casing of parameters for GCODE commands where it doesn't make sense (default: M117). See also #2177.
  • #2050 - New hook octoprint.comm.protocol.temperatures.received that allows plugins to further preprocess/sanitize temperature data received from the printer.
  • #2055 - Increased the size of the API key field in the settings.
  • #2056 - Added a Copy button to the API key field in the settings and user settings.
  • #2094 - Allow UTF-8 display names for uploaded files. The files will still get an ASCII only name on disk, but the UTF-8 name used during upload will also be persisted and shown in the file list. This also allows using emojis in your file and folder names now.
  • #2104 - Allow more URL schemes for installing plugins from. Supported schemes should now mirror what pip itself supports: http, https, git, git+http, git+https, git+ssh, git+git, hg+http, hg+https, hg+static-http, hg+ssh, svn, svn+svn, svn+http, svn+https, svn+ssh, bzr+http, bzr+https, bzr+ssh, bzr+sftp, bzr+ftp, bzr+lp.
  • #2109 - New decorator @firstrun_only_access for API endpoints that should only be available before first setup has been completed.
  • #2111 - Made the file list's scroll bar wider.
  • #2131 - Added warning to restart, shutdown, reboot and update confirmations that that may disrupt ongoing prints, even those run from the printer's internal storage/SD. See also #2146 and #2152.
  • #2138 - Slightly longer timeout when attempting to read from serial during auto detection via programming mode. Might help with detection of some slower printer controllers under certain circumstances.
  • #2200 - Wrap all JS assets of plugins into one anonymous function per plugin. That way plugins using "use strict"; won't cause hard to debug and weird issues with other plugins bundled after them. The down side is that plugins currently relying on implicit declaration of global helper functions or variables (function convert(value) { ... }) to be available outside of their own plugin's JS assets will now run into errors. To compensate for that while affected plugins are adjusted to declare globals explicitly (window.convert = function(value) { ... }), a temporary feature flag was added as "Settings > Features > Enable legacy plugin asset bundling" that switches back to the old form of bundling until plugins you rely on are updated. This flag will be removed again in a later version (currently planned for 1.3.8). See also the note above and #2246.
  • #2229 - Added note to printer profile dialog that the nozzle offsets for multi extruder setups are only to be configured if they are not already set in the printer's firmware.
  • #2232 - Disable movement distance buttons when not connected to the printer or when printing, since they don't have any use then.
  • #2239 - Improved the check summing speed, thus improving the general achievable throughput on the comm layer.
  • Allow cancelling of file transfers
  • Made check of how old an unrendered timelapse is more lenient buy looking at both the creation and last modification date and using the younger one.
  • Made notifications in general auto-close faster.
  • Make the first profile saved for a slicer the default profile for that slicer.
  • New command server for testing server connections on the JS test API.
  • New hook octoprint.accesscontrol.keyvalidator that allows plugins to validate their own customized API keys to be used to access OctoPrint.
  • Updated cookiecutter, requests and psutil dependencies.
  • Added safety warning to first run wizard.
  • More error resilience against broken view models.
  • New sub command octoprint safemode. Will set the server.startOnceInSafeMode setting in the config so that the next (re)start of the server after issuing this command will happen in safe mode.
  • New sub command octoprint config effective. Will report the effective config.
  • New centralized plugin blacklist (opt-in). Allows to prevent plugins/certain versions of plugins known to cause crippling issues with the normal operation of OctoPrint to be disabled from loading, if the user has opted to do so in the settings/wizard.
  • Log how to enable serial.log to serial.log if it's disabled. That will hopefully put at least a small dent in the amount of "It's empty!" responses in tickets ;)
  • Force new Pypi index URL in requirements.txt as an additional work around against old tooling.
  • Prefer plain pip over git for updating OctoPrint.
  • Added environment detection and logging on startup. That should give us more information about the environment to produce a reported bug in.
  • Added OctoPi support plugin that provides information about the detected OctoPi version. Will only load if OctoPi is detected.
  • More dynamic plugin mixin detection. Now using a base class instead of having to list all types manually. Should greatly reduce overhead of adding new mixin types.
  • Support leaf merging for file extension tree, allowing to add new file extensions to types registered by default.
  • Allow non GCODE SD file transfers if registered as machinecode through e.g. a plugin's file extension hook. Caution: This doesn't make streaming arbitrary files to the printer via serial work magically. It merely allows that, it's up to the firmware to actually be able to handle that. Also, the regular GCODE streaming protocol is used, so if the streamed file contains control characters from that (e.g. M29 to signal the end of the streaming process), stuff will break!
  • Added a test button for the online connectivity check.
  • Announcements plugin: Added UTM Tags.
  • Cura plugin: Less not configured yet logging.
  • GCODE viewer: Added advanced options that allow configuring display of bounding boxes, sorting by layers and hiding of empty layers.
  • GCODE viewer: Persist all options to local storage so they will be automatically set again the next time the GCODE viewer is used in the same browser.
  • Software update: Auto-hide "Everything is up-to-date" notification.
  • Easier copying of terminal contents thanks to dedicated copy button.
  • Timelapse: #2067 - Added rate limiting to z-based timelapse capturing to prevent issues when accidentally leaving this mode on with vase mode prints.
  • Timelapse: Refactored configuration form & added reset button to switch back to currently active settings.
  • Timelapse: Sort timelapses by modification instead of creation time (creation time can be newer if a backup restore was done).
  • Virtual printer: Support configurable ambient temperature for testing.
  • Virtual printer: Support configurable reset lines.
  • Virtual printer: Added new debug trigger trigger_missing_lineno.
  • Virtual printer: Allow empty/None prepared oks, allowing to simulate lost acknowledgements right on start.
  • Docs: #2142 - Added documentation for the bundled virtual printer plugin.
  • Docs: #2234 - Added info on how to install under Suse Linux.
  • Docs: Added example PyCharm run configuration that includes automatic dependency updates on start.
  • Docs: Added information on how to run the test suite.
  • Various refactorings
  • Various documentation updates
  • Fetch plugin blacklist (and also announcements, plugin notices and plugin repository) via https instead of http.

Bug fixes

  • #2044 - Fix various typos in strings and comments
  • #2048 & #2176 - Fixed various warnings during documentation generation.
  • #2077 - Fix an issue with shared nozzles and the temperature graph, causing temperature to not be reported properly when another tool but the first one is selected. See also #2077
  • #2108 - Added no-op default action to login form so that username + password aren't sent as GET parameters if for some reason the user tries to log in before the view models are properly bound and thus the AJAX POST submission method is attached.
  • #2111 - Prevent file list's scroll bar from fading out.
  • #2146 - Fix initialization of temperature graph if it's not on the first tab due to tab reordering.
  • #2166 - Workaround for a Firefox bug that causes the Drag-n-Drop overlay to never go away if the file is dragged outside of the browser window.
  • #2167 - Fixed grammar of print time estimation tooltip
  • #2175 - Cancel printing when an external reset of the printer is detected on the serial connection.
  • #2181 - More resilience against non-standard M115 responses.
  • #2182 - Don't start tracking non existing or nonfunctional tools if encountering a temperature command referencing said tool. See also kantlivelong/OctoPrint-PSUControl#68.
  • #2196 - Marked API key fields as readonly instead of disabled to allow their contents to be copied in Firefox (which wasn't possible before).
  • #2203 - Reset temperature offsets to 0 when disconnected from the printer.
  • #2206 - Disable pre-configured timelapse if snapshot URL of ffmpeg path are unset.
  • #2214 - Fixed temperature fields not selecting in MS Edge on focus.
  • #2217 - Fix an issue in octoprint.util causing a crash when running under PyPy instead of CPython.
  • #2226 - Handle No Line Number with checksum, Last Line: ... errors from the firmware.
  • #2233 - Respond with 411 Length Required when content length is missing on file uploads.
  • #2242 - Fixed an issue where print time left could show "1 days" instead of "1 day".
  • #2262 (regression) - Fixed a bug causing Error:checksum mismatch, Last Line: ... errors from the firmware to be handled incorrectly.
  • #2267 (regression) - Fixed a bug causing the GCODE viewer to not get properly initialized due to a JS error on load if "Also show next layer" was selected.
  • #2268 (regression) - Fixed a bug causing a display error with the temperature offsets. If one offset was changed, all others seemed to revert back to 0.
  • Fixed cleanup of unrendered timelapses with certain names.
  • Fixed a caching issue with the file list API and the slicing API.
  • Fixed initial sizing of the temperature graph.
  • More resilience against corrupt .metadata.yaml files.
  • More resilience against corrupt/invalid entries for system actions.
  • More resilience against invalid JSON command requests.
  • More resilience against broken packages in the python environment.
  • Don't evaluate onWebcamLoaded more than once when switching to the webcam tab.
  • Fixed octoprint config sub command.
  • Fixed deactivated user accounts being able to login (albeit without a persistent session). Show fitting error instead.
  • Fixed temperature auto report after an external reset.
  • Don't log full request headers in Tornado on an error.
  • Fix displayed notification message for synchronous system commands. Was accidentally swapped with the one for asynchronous system commands.
  • GCODE viewer: Fix error on empty layers.
  • Virtual printer: Fix resend simuation.
  • Docs: Fixed CSS of line numbered listings.
  • Docs: Updated mermaid to fix a deprecation warning.
  • Fixed ordering of plugin assets, should be alphabetical based on the plugin identifier. (regression)
  • Fixed an issue causing redundant software update configuration settings to be written to config.yaml, in turn causing issues when downgrading to <1.3.5. (regression)
  • Fixed an issue detecting whether the installed version is a release version or a development version. (regression)

More Information

- Python
Published by foosel about 8 years ago

octoprint - 1.3.6rc3 (release candidate)

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 but not finding problems with it. Thanks!

Note for upgraders and plugin authors: Change in the bundling of JS assets can lead to issues in plugins

A change to solve issues with plugins bundling JS assets that cause interference with other plugins (e.g. through the declaration of "use strict") and in general to add better isolation and error handling might cause errors for some plugins that go beyond your run-off-the-mill view model and also implicitly declare new globals.

If you happen to run into any such issues, you can switch back to the old way of bundling JS assets via the newly introduced "Settings > Feature > Enable legacy plugin asset bundling" toggle (check it, save the settings, restart the server). This is provided to allow for a minimally invasive adjustment period until affected plugins have been updated.

You can find out more about the change, how to know if a plugin is even affected and what do about it on the OctoBlog.

Note for people who already ran 1.3.6rc1 and/or 1.3.6rc2, then downgraded back to 1.3.5

You'll need to do a tiny fix in your config.yaml, made necessary by a bug fixed below that was present in 1.3.6rc1 and 1.3.6rc2, or you won't be able to switch back again to Maintenance RCs to test this third RC or update to 1.3.6 stable. You'll need to remove the method: pip line under plugins.softwareupdate.checks.octoprint and then restart.

You can easily do this config.yaml change via the YamlPatcher plugin using the patch string

[["remove", "plugins.softwareupdate.checks.octoprint.method", ""]]

or via the command line using

sed -i -e "s/method: pip//g" ~/.octoprint/config.yaml

Improvements

  • Fetch plugin blacklist (and also announcements, plugin notices and plugin repository) via https instead of http.

Bug fixes

  • Fixed an issue causing redundant software update configuration settings to be written to config.yaml, in turn causing issues when downgrading to <1.3.5
  • Fixed an issue detecting whether the installed version is a release version or a development version.

(Commits)

- Python
Published by foosel about 8 years ago

octoprint - 1.3.6rc2 (release candidate)

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 but not finding problems with it. Thanks!

Note for upgraders and plugin authors: Change in the bundling of JS assets can lead to issues in plugins

A change to solve issues with plugins bundling JS assets that cause interference with other plugins (e.g. through the declaration of "use strict") and in general to add better isolation and error handling might cause errors for some plugins that go beyond your run-off-the-mill view model and also implicitly declare new globals.

If you happen to run into any such issues, you can switch back to the old way of bundling JS assets via the newly introduced "Settings > Feature > Enable legacy plugin asset bundling" toggle (check it, save the settings, restart the server). This is provided to allow for a minimally invasive adjustment period until affected plugins have been updated.

You can find out more about the change, how to know if a plugin is even affected and what do about it on the OctoBlog.

Note for people who already ran 1.3.6rc1, then downgraded back to 1.3.5

You'll need to do a tiny fix in your config.yaml, made necessary by the switch to pip as update method in 1.3.6rc1, or you won't be able to switch back again to Maintenance RCs to test this second RC. You'll need to remove the method: pip line under plugins.softwareupdate.checks.octoprint and then restart.

You can easily do this config.yaml change via the YamlPatcher plugin using the patch string

[["remove", "plugins.softwareupdate.checks.octoprint.method", ""]]

or via the command line using

sed -i -e "s/method: pip//g" ~/.octoprint/config.yaml

Bug fixes

  • #2262 - Fixed a bug causing Error:checksum mismatch, Last Line: ... errors from the firmware to be handled incorrectly.
  • #2267 - Fixed a bug causing the GCODE viewer to not get properly initialized due to a JS error on load if "Also show next layer" was selected.
  • #2268 - Fixed a bug causing a display error with the temperature offsets. If one offset was changed, all others seemed to revert back to 0.
  • Fixed ordering of plugin assets, should be alphabetical based on the plugin identifier.

(Commits)

- Python
Published by foosel about 8 years ago

octoprint - 1.3.6rc1 (release candidate)

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 but not finding problems with it. Thanks!

Note for upgraders and plugin authors: Change in the bundling of JS assets can lead to issues in plugins

A change to solve issues with plugins bundling JS assets that cause interference with other plugins (e.g. through the declaration of "use strict") and in general to add better isolation and error handling might cause errors for some plugins that go beyond your run-off-the-mill view model and also implicitly declare new globals.

If you happen to run into any such issues, you can switch back to the old way of bundling JS assets via the newly introduced "Settings > Feature > Enable legacy plugin asset bundling" toggle (check it, save the settings, restart the server). This is provided to allow for a minimally invasive adjustment period until affected plugins have been updated.

You can find out more about the change, how to know if a plugin is even affected and what do about it on the OctoBlog.

Improvements

  • #203 - Allow selecting the current tab via URL hashs. Also update URL hash when switching tabs, thus adding this to the browser history and allowing quicker back and forth navigation through the browser's back and forward buttons.
  • #1026 - Automatically upper case parameters in GCODE commands sent from the Terminal tab. A black list is in place that prevent upper casing of parameters for GCODE commands where it doesn't make sense (default: M117). See also #2177.
  • #2050 - New hook octoprint.comm.protocol.temperatures.received that allows plugins to further preprocess/sanitize temperature data received from the printer.
  • #2055 - Increased the size of the API key field in the settings.
  • #2056 - Added a Copy button to the API key field in the settings and user settings.
  • #2094 - Allow UTF-8 display names for uploaded files. The files will still get an ASCII only name on disk, but the UTF-8 name used during upload will also be persisted and shown in the file list. This also allows using emojis in your file and folder names now.
  • #2104 - Allow more URL schemes for installing plugins from. Supported schemes should now mirror what pip itself supports: http, https, git, git+http, git+https, git+ssh, git+git, hg+http, hg+https, hg+static-http, hg+ssh, svn, svn+svn, svn+http, svn+https, svn+ssh, bzr+http, bzr+https, bzr+ssh, bzr+sftp, bzr+ftp, bzr+lp.
  • #2109 - New decorator @firstrun_only_access for API endpoints that should only be available before first setup has been completed.
  • #2111 - Made the file list's scroll bar wider.
  • #2131 - Added warning to restart, shutdown, reboot and update confirmations that that may disrupt ongoing prints, even those run from the printer's internal storage/SD. See also #2146 and #2152.
  • #2138 - Slightly longer timeout when attempting to read from serial during auto detection via programming mode. Might help with detection of some slower printer controllers under certain circumstances.
  • #2200 - Wrap all JS assets of plugins into one anonymous function per plugin. That way plugins using "use strict"; won't cause hard to debug and weird issues with other plugins bundled after them. The down side is that plugins currently relying on implicit declaration of global helper functions or variables (function convert(value) { ... }) to be available outside of their own plugin's JS assets will now run into errors. To compensate for that while affected plugins are adjusted to declare globals explicitly (window.convert = function(value) { ... }), a temporary feature flag was added as "Settings > Features > Enable legacy plugin asset bundling" that switches back to the old form of bundling until plugins you rely on are updated. This flag will be removed again in a later version (currently planned for 1.3.8). See also the note above and #2246.
  • #2229 - Added note to printer profile dialog that the nozzle offsets for multi extruder setups are only to be configured if they are not already set in the printer's firmware.
  • #2232 - Disable movement distance buttons when not connected to the printer or when printing, since they don't have any use then.
  • #2239 - Improved the check summing speed, thus improving the general achievable throughput on the comm layer.
  • Allow cancelling of file transfers
  • Made check of how old an unrendered timelapse is more lenient buy looking at both the creation and last modification date and using the younger one.
  • Made notifications in general auto-close faster.
  • Make the first profile saved for a slicer the default profile for that slicer.
  • New command server for testing server connections on the JS test API.
  • New hook octoprint.accesscontrol.keyvalidator that allows plugins to validate their own customized API keys to be used to access OctoPrint.
  • Updated cookiecutter, requests and psutil dependencies.
  • Added safety warning to first run wizard.
  • More error resilience against broken view models.
  • New sub command octoprint safemode. Will set the server.startOnceInSafeMode setting in the config so that the next (re)start of the server after issuing this command will happen in safe mode.
  • New sub command octoprint config effective. Will report the effective config.
  • New centralized plugin blacklist (opt-in). Allows to prevent plugins/certain versions of plugins known to cause crippling issues with the normal operation of OctoPrint to be disabled from loading, if the user has opted to do so in the settings/wizard.
  • Log how to enable serial.log to serial.log if it's disabled. That will hopefully put at least a small dent in the amount of "It's empty!" responses in tickets ;)
  • Force new Pypi index URL in requirements.txt as an additional work around against old tooling.
  • Prefer plain pip over git for updating OctoPrint.
  • Added environment detection and logging on startup. That should give us more information about the environment to produce a reported bug in.
  • Added OctoPi support plugin that provides information about the detected OctoPi version. Will only load if OctoPi is detected.
  • More dynamic plugin mixin detection. Now using a base class instead of having to list all types manually. Should greatly reduce overhead of adding new mixin types.
  • Support leaf merging for file extension tree, allowing to add new file extensions to types registered by default.
  • Allow non GCODE SD file transfers if registered as machinecode through e.g. a plugin's file extension hook. Caution: This doesn't make streaming arbitrary files to the printer via serial work magically. It merely allows that, it's up to the firmware to actually be able to handle that. Also, the regular GCODE streaming protocol is used, so if the streamed file contains control characters from that (e.g. M29 to signal the end of the streaming process), stuff will break!
  • Added a test button for the online connectivity check.
  • Announcements plugin: Added UTM Tags.
  • Cura plugin: Less not configured yet logging.
  • GCODE viewer: Added advanced options that allow configuring display of bounding boxes, sorting by layers and hiding of empty layers.
  • GCODE viewer: Persist all options to local storage so they will be automatically set again the next time the GCODE viewer is used in the same browser.
  • Software update: Auto-hide "Everything is up-to-date" notification.
  • Easier copying of terminal contents thanks to dedicated copy button.
  • Timelapse: #2067 - Added rate limiting to z-based timelapse capturing to prevent issues when accidentally leaving this mode on with vase mode prints.
  • Timelapse: Refactored configuration form & added reset button to switch back to currently active settings.
  • Timelapse: Sort timelapses by modification instead of creation time (creation time can be newer if a backup restore was done).
  • Virtual printer: Support configurable ambient temperature for testing.
  • Virtual printer: Support configurable reset lines.
  • Virtual printer: Added new debug trigger trigger_missing_lineno.
  • Virtual printer: Allow empty/None prepared oks, allowing to simulate lost acknowledgements right on start.
  • Docs: #2142 - Added documentation for the bundled virtual printer plugin.
  • Docs: #2234 - Added info on how to install under Suse Linux.
  • Docs: Added example PyCharm run configuration that includes automatic dependency updates on start.
  • Docs: Added information on how to run the test suite.
  • Various refactorings
  • Various documentation updates

Bug fixes

  • #2044 - Fix various typos in strings and comments
  • #2048 & #2176 - Fixed various warnings during documentation generation.
  • #2077 - Fix an issue with shared nozzles and the temperature graph, causing temperature to not be reported properly when another tool but the first one is selected. See also #2077
  • #2108 - Added no-op default action to login form so that username + password aren't sent as GET parameters if for some reason the user tries to log in before the view models are properly bound and thus the AJAX POST submission method is attached.
  • #2111 - Prevent file list's scroll bar from fading out.
  • #2146 - Fix initialization of temperature graph if it's not on the first tab due to tab reordering.
  • #2166 - Workaround for a Firefox bug that causes the Drag-n-Drop overlay to never go away if the file is dragged outside of the browser window.
  • #2167 - Fixed grammar of print time estimation tooltip
  • #2175 - Cancel printing when an external reset of the printer is detected on the serial connection.
  • #2181 - More resilience against non-standard M115 responses.
  • #2182 - Don't start tracking non existing or nonfunctional tools if encountering a temperature command referencing said tool. See also kantlivelong/OctoPrint-PSUControl#68.
  • #2196 - Marked API key fields as readonly instead of disabled to allow their contents to be copied in Firefox (which wasn't possible before).
  • #2203 - Reset temperature offsets to 0 when disconnected from the printer.
  • #2206 - Disable pre-configured timelapse if snapshot URL of ffmpeg path are unset.
  • #2214 - Fixed temperature fields not selecting in MS Edge on focus.
  • #2217 - Fix an issue in octoprint.util causing a crash when running under PyPy instead of CPython.
  • #2226 - Handle No Line Number with checksum, Last Line: ... errors from the firmware.
  • #2233 - Respond with 411 Length Required when content length is missing on file uploads.
  • #2242 - Fixed an issue where print time left could show "1 days" instead of "1 day".
  • Fixed cleanup of unrendered timelapses with certain names.
  • Fixed a caching issue with the file list API and the slicing API.
  • Fixed initial sizing of the temperature graph.
  • More resilience against corrupt .metadata.yaml files.
  • More resilience against corrupt/invalid entries for system actions.
  • More resilience against invalid JSON command requests.
  • More resilience against broken packages in the python environment.
  • Don't evaluate onWebcamLoaded more than once when switching to the webcam tab.
  • Fixed octoprint config sub command.
  • Fixed deactivated user accounts being able to login (albeit without a persistent session). Show fitting error instead.
  • Fixed temperature auto report after an external reset.
  • Don't log full request headers in Tornado on an error.
  • Fix displayed notification message for synchronous system commands. Was accidentally swapped with the one for asynchronous system commands.
  • GCODE viewer: Fix error on empty layers.
  • Virtual printer: Fix resend simuation.
  • Docs: Fixed CSS of line numbered listings.
  • Docs: Updated mermaid to fix a deprecation warning.

(Commits)

- Python
Published by foosel about 8 years ago