Given how long this has been brewing, the changelog has grown quite large. Let’s take a look at the highlights, shall we?

  • The biggest announcement is probably that with the 1.8.0 release OctoPrint is dropping Python 2 support. I already wrote about this in a past post here, and this is now the first release candidate that is Python 3 exclusive. As of the publication of this first release candidate, any OctoPrint instances still on Python 2 have been redirected to the legacy repository for update checks and thus will also no longer be able to partake in this RC phase - which they wouldn’t anyway as the code base has already been migrated to be Python 3 exclusive, removing all the workarounds so painstakingly put in over the past three years.
  • The temperature tab now has (optional) event markers for when a print gets started, paused, resumed, cancelled or finishes. Big thanks to @surdu!
  • 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. This was contributed by @jneilliii!
  • 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.
  • This realease adds 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. @johnboiles did most of the legwork on this!
  • OctoPrint will now show a heads-up notice if no serial ports are detected, with a link to the relevant FAQ entry. That will hopefully make it easier to spot if the printer is not physically connected or unsupported.
  • Thumbnails for the timelapse recordings will now be generated automatically and displayed in the UI. There’s also a command line tool for generating thumbnails for the existing recordings. A fance new feature contributed by @crysxd!
  • The GCode Viewer’s memory usage has been improved by @JoveToo and @kantlivelong by switching out the underlying data structure and hunting down some bottlenecks. This means you should now be able to display larger GCode files before running into issues.
  • Performance of settings access has been greatly improved as well, by refactoring the code to use a more efficient data structure. This was some heavy collaboration with @flaviut!
  • Third party clients can now authenticate with OctoPrint through the Application Key plugin’s fancy new auth dialog instead of having to direct the user to the more heavy weight full UI.
  • An encoding issue was solved that was observed against the latest versions of pip.
  • … and even more.

Please also take a look at the following heads-ups:

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.

You can find the full changelog and release notes as usual on GitHub.

Special thanks to everyone who contributed to this release candidate and provided full, analyzable bug reports, you help making the next release as stable as possible!

A special Thank You! to these 27 fine people for their PRs!

As the past RCs have shown me that a lot of people appear to be unaware of this: Please do not install this RC if you expect a fully stable version. It is not a stable release, it is a release candidate: severe bugs may occur, and they might be bad enough that they make a manual downgrade to an earlier version necessary - maybe even from the command line.

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

If you want to and can help test this release candidate, you can find information on how to switch to the "Maintenance RCs" release channel in this guide if not already done (also linked below).

Please provide feedback on this RC. For general feedback you can use this ticket on the tracker. The information that everything works fine for you is also valuable feedback 😄. For bug reports 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 so make sure to fill out all fields of the issue template.

Thanks!

Depending on the feedback regarding this version I'll look into fixing any observed regressions and bugs and pushing out a follow-up version as soon as possible and necessary.

Images

The temperature graph can now show markers for print events. This was contributed by @surdu.
While printing you will be able to enqueue updates to be done after the print job finishes. Thanks to @jneilliii!
The Plugin Manager now allows to enable and disable several plugins in bulk.
If no serial port is detected in the system, OctoPrint will now state that and link to the FAQ entry on the matter.
Timelapse recordings now also have thumbnails, thanks to the work of @crysxd!

Discuss!