Mrz 302021

Lange Zeit war es still um OctoPrint, so dass am 19. Januar 2021 die letzte Version veröffentlicht wurde. Diese hatte „damls“ die Versionsnummer 1.5.3 gehabt und bis dato gab es kein neues Update von OctoPrint. Vor knapp 3 Stunden wurde dann unerwartet eine neue Release Candidate Version veröffentlicht, welche nun in Version 1.6.0 zum installieren bereit steht.

Wie man es gewohnt ist, ist der Changelog wieder unerwartet hoch, so dass es eine Menge an Neuerungen sowie eine Menge an Fehlerbehebungen gibt. Daher kommt wie man es kennt der komplette Changelog für Euch zum nachlesen.

Wir wünschen ein fröhliches Updaten, jedoch mit dem Hinweis, dass ein Release Candidate noch Fehler enthalten kann. Daher ist dieses Update nur was für die jenigen, die gerne immer aktuell sein möchten. 😉

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


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 useradminnever. 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/pluginsplugin/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 CPR 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.logserial.logplugin_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_insertedsd_ejectedsd_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 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 for online check. Less controversial than
  • 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 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

Kommentar verfassen