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.
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 tostate
. - #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
anddelete_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 thepip
call’s stdout/stderr instead of a temporary file. - #3885 – Support permission objects as keys to
SettingsPlugin.get_settings_restricted_paths
, instead of justuser
,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
andGcodeScript${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 intoplugin/pluginmanager/plugins
,plugin/pluginmanager/orphans
andplugin/pluginmanager/repository
. There’s also nowplugin/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
andL
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 loadingconfig.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
andplugin_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 (viaoctoprint 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 tooctoprint.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 than8.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 onM501
/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 offrozendict
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